美文网首页
子类父类初始化流程

子类父类初始化流程

作者: 念䋛 | 来源:发表于2021-07-12 19:48 被阅读0次

    父类子类在初始化的是执行的流程
    ①子类构造器会隐式调用父类的无参构造方法,如果子类显式利用super调用了父类的有参构造函数,就不会再隐式调用无参构造函数了
    ②子类初始化顺序 :
    父类静态代码块–子类静态代码块–父类非静态代码块–父类无参构造方法–子类非静态代码块–子类无参构造方法
    父类静态代码块–子类静态代码块–父类非静态代码块–父类无参构造方法–子类非静态代码块–子类有参构造方法

    下面对上面的结论利用实例解释一下
    首先要了解的是
    1.jdk会隐式的给类生成无参构造函数,如果已经定义了有参构造函数,就不会隐式的生成无参构造函数
    2.子类初始化的时候(包含子类调用有参构造函数)会调用父类的无参构造函数,如果显式的利用super调用父类的有参构造函数,就不会再隐式的调用父类的无参构造函数
    3.子类构造函数调用this或者super,都要放在代码的第一行

    1.父类 有参构造 子类有参构造函数
    父类,只有有参构造函数

    public class Father {
        public String name;
        public Father(String name) {
            this.name = name;
            System.out.println ("Father的有参构造函数");
        }
    }
    

    父类,无参构造函数,有参构造函数

    public class Father {
        public String name;
    
        public Father() {
        }
    
        public Father(String name) {
            this.name = name;
            System.out.println ("Father的有参构造函数");
        }
    }
    

    子类

    public class Children extends Father {
        public Children() {
        }
    
        public Children(String name) {
            //必须放在第一行
            //调用父类的无参构造函数
            super();
            //调用本类的无参构造函数
            //this();
            //调用父类的有参构造函数
            //super(name);
            System.out.println ("Children有参构造函数");
        }
    
        public static void main(String[] args) {
            new Children ();
        }
    }
    
    image.png
    image.png
    image.png

    相关文章

      网友评论

          本文标题:子类父类初始化流程

          本文链接:https://www.haomeiwen.com/subject/ttctpltx.html