一、无参构造器:
如下,Detergent 继承Cleanser,现初始化Detergent,输出:
Cleanser
Detergent
说明构建过程是从基类“向外”扩散的,所以基类在导出类构造器访问它之前,就已经完成了初始化。即使你不为Cartoon()创建构造器,编译器也会为你合成一个默认的构造器,该构造器将调用基类的构造器。
public class Cleanser {
public Cleanser(){
System.out.println("Cleanser");
}
}
public class Detergent extends Cleanser{
public Detergent(){
System.out.println("Detergent");
}
public static void main(String[] args) {
Detergent a = new Detergent();
}
}
二、有参构造器
父类没有无参构造器
public class Cleanser {
public Cleanser(int i){
System.out.println("Cleanser int i");
}
}
如果此时子类继承父类,编写构造器会出现如下报错
我们必须在子类的构造器中添加父类构造器
public class Detergent extends Cleanser{
public Detergent(){
super(1);
System.out.println("Detergent");
}
public Detergent(int i){
super(1);
System.out.println("Detergent int i");
}
public static void main(String[] args) {
//Detergent a = new Detergent();
Detergent b = new Detergent(1);
}
}