3.创建对象时调用顺序

Posted xmc-ccz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.创建对象时调用顺序相关的知识,希望对你有一定的参考价值。

通过一个例子,来简单说一下创建对象时调用顺序问题。这里只是初步简单了解一下,并不深入。

有一个父类A,其代码如下:

 1 class HelloA {
 2     public HelloA(){
 3         System.out.println("HelloA");
 4     }
 5     {
 6         System.out.println("I‘m A class");
 7     }
 8     static{
 9         System.out.println("static A");
10     }
11 }

有一个java类B,继承了类A

public class HelloB extends HelloA {
    public HelloB(){
        System.out.println("HelloB");
    }
    {
        System.out.println("I‘m B class");
    }
    static{
        System.out.println("static B");
    }
}

运行结果:

技术图片

 

 从结果分析: 

1.先初始化父类和子类的静态成员(带有static)

2.父类非静态成员

3.父类构造方法

4.子类非静态成员

5.子类构造方法

以上是关于3.创建对象时调用顺序的主要内容,如果未能解决你的问题,请参考以下文章

片段生命周期 - 在显示/隐藏时调用哪个方法?

当 JS 值被垃圾回收时调用本机代码

片段:按下返回按钮并自定义它时调用哪个回调

通过调用 popBackStackImmediate 返回到 tablayout 中的替换片段时调用哪个方法

如何防止在android片段中按下后退按钮时调用onCreateView

如何能避免在调用子类对象的虚函数时调用父类的虚函数呢?