因为抽象类不可实例化,那么只能在子类实例化时调用该抽象类的构造器才有用
看实例代码:
abstract class Animal {
Animal(){
System.out.println("抽象类Animal无参构造器"); //此处执行前会默认执行super()
}
Animal(int a){
System.out.println("抽象类Animal有参构造器");
}
}
public class Horse extends Animal {
Horse () {
System.out.println("子类horse无参构造器"); //此处执行前会默认执行super()
}
Horse (int h) {
super(3);
System.out.println("子类horse有参构造器");
}
public static void main(String [] args) {
Horse h = new Horse();
System.out.println("---------------------");
Animal h2 = new Horse(6);
// Animal h3 = new Animal(); //无法编译,抽象类不可实例化
}
}
运行结果如下:
抽象类Animal无参构造器
子类horse无参构造器
---------------------
抽象类Animal有参构造器
子类horse有参构造器