子类和父类构造函数执行顺序

新建子类对象时一定会调用父类的无参构造函数

  • 子类调用有参构造函数前会调用父类的无参构造函数
  • 子类调用无参构造函数前会调用父类的无参构造函数

若父类定义了有参构造函数而没有定义无参构造函数,则报错

若父类没有定义任何构造函数,则自动生成无参构造函数

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();
    }
}

输出为:

这里是父类的无参构造函数
这里是子类的无参构造函数
这里是父类的无参构造函数
这里是子类的有参构造函数
这里是子类独有的方法

上一篇:php 实现父子级树结构


下一篇:Gbase数据库备份与还原