新建子类对象时一定会调用父类的无参构造函数
- 子类调用有参构造函数前会调用父类的无参构造函数
- 子类调用无参构造函数前会调用父类的无参构造函数
若父类定义了有参构造函数而没有定义无参构造函数,则报错
若父类没有定义任何构造函数,则自动生成无参构造函数
public class parent {
public parent() {
System.out.println("这里是父类的无参构造函数");
}
private parent(String name) {
System.out.println("这里是父类的有参构造函数");
}
}
class son extends parent{
public son(){
System.out.println("这里是子类的无参构造函数");
}
public son(String name){
System.out.println("这里是子类的有参构造函数");
}
public void getname(){
System.out.println("这里是子类独有的方法");
}
public static void main(String[] args) {
//子类对象可以赋值给父类对象 但是子类的独有的方法自动隐藏
parent a = new son("shen");
//a中无法调用getname方法
son b = new son("shen1");
b.getname();
}
}
输出为:
这里是父类的无参构造函数
这里是子类的无参构造函数
这里是父类的无参构造函数
这里是子类的有参构造函数
这里是子类独有的方法