首先先准备好son类,father类,demo01类
测试开始
先运行以上代码。控制台输出
总结:这是因为子类继承父类的数据,还可能会使用父类的数据。所以在子类初始化时,一定先对父类进行初始化。
接着将father类中无参构造方法注释,运行。
控制台报错。
这是因为每个子类的构造方法中。第一个语句时super()。意思是先初始化初始化父类的无参构造方法。所以当父类的无参构造方法被注释时。子类的构造方法无法调用到父类的无参构造方法,报错。
接下来我们在子类的每个构造方法中加上super(“ ”),让子类的构造方法去调用父类的带参构造方法,弥补父类中被注释掉的无参构造方法。
package testpackage;
public class Son extends Father {
int age = 30;
String name = "caizhaohan";
int height = 170;
/*public void show() {
int age = 20;
System.out.println(age);
System.out.println(this.age);
System.out.println(super.age);
}*/
public Son() {
super(" ");
System.out.println("son无参构造方法");
}
public Son(String son) {
super(" ");
System.out.println("son带参构造方法");
}
}
运行结果
控制台输出了父类的带参构造方法。
总结:当父类缺少无参构造方法时,我们可以让子类调用父类带参构造方法,或者在子类中定义一个无参构造方法。