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

子类父类初始化流程

作者: 念䋛 | 来源:发表于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

相关文章

  • 子类父类初始化流程

    父类子类在初始化的是执行的流程①子类构造器会隐式调用父类的无参构造方法,如果子类显式利用super调用了父类的有参...

  • python继承二(实例)

    父类 子类一 采用父类名.方法的方式调用父类中的初始化函数" 子类二 " 使用super(子类名,self).方法...

  • java中的继承

    继承的关键之是extends子类 extends 父类 继承的初始化顺序 初始化父类再初始化子类 先执行初始化对象...

  • 子类 super()传参的坑

    父类 子类去继承BaseServiceImpl 需要初始化baseDaoI子类: 如图向父类传递baseDaoI对...

  • init&initWithFrame你不知道的

    问题:子类初始化(init)却调用了父类的initWithFrame初始化方法。导致一初始化子类,父类也被创建出现...

  • 初始化顺序

    1.装载类:先装载父类(完成父类静态初始化)再装载子类(完成子类静态初始化) 附:静态初始化包括静态变量初始化,静...

  • 子类初始化时为什么要调用self=[super init]

    因为子类继承自父类,需要获得父类的实例和方法等,所以初始化子类之前要先保证父类已经初始化完毕,防止出错。当调用''...

  • Swift学习之初始化器的重写和继承

    一、初始化器的重写 1、子类重写父类的指定初始化器 当重写父类的指定初始化器时,必须加上override(即使子类...

  • 零碎知识点

    new对象时初始化顺序:父类静态代码块->子类静态代码块->普通属性->父类构造代码块->父类构造函数->子类构造...

  • 创建对象时调用顺序

    创建对象时调用顺序如下: ①先初始化父类和子类的静态成员。 ②父类非静态成员。 ③父类构造方法。 ④子类非静态成员...

网友评论

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

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