首页 > 解决方案 > 类的成员什么时候初始化?

问题描述

究竟是什么时候初始化类成员?

在下面的代码中:

public class A{
    public  B b = new B();
    private C c = new C(123);

    public A (arg a){
        // Do something
    }

    public someMethod(){
       Log.i(TAG, " "+ b.getD());
    } 
}

main(){
    A a = new A ("xyz"); }

B & C 类的对象什么时候创建?并且可以保证被创建吗?

专业应用程序是否应该使用此类代码?

标签: javaandroid

解决方案


创建对象时,按以下顺序执行以下操作:

  1. 对象以正确的对象类型在堆上分配,所有实例字段都“默认初始化”为零、false 或 null。
  2. 计算 super(...) 或 this(...) 中的表达式,并调用链上的下一个类的构造函数。(这会递归链构造函数,以便首先执行 Object 构造函数。)
  3. 实例变量初始化程序和任何实例初始化程序块按顺序执行。
  4. 构造函数的主体被执行。
  5. 构造函数返回。

希望它可以帮助你。


推荐阅读