构造方法的初始化顺序

构造方法的初始化顺序,第1张

构造方法的初始化顺序,第2张

假设您正在用java编写一个程序,并用下面的代码初始化A类和B类的对象:

A级

int a = f();

int f() {

返回1;

}

}

B类扩展了A {

int b = a;

int f() {

return 2;

}

}

公共类CtorDemo1 {

公共静态void main(String args[]) {

B bobj = new B();

system . out . println(bobj . b);

}

}

现在,似乎很明显,当初始化完成时,bobj.b的值将是1。毕竟B类中B的值是用A类中A的值初始化的,而A是用F的值初始化的,它的值是1,对吧?

其实bobj.b的值是2,你应该知道为什么要知道对象初始化的问题。

创建对象时,初始化按以下顺序进行:

1.将成员的值设置为默认初始值(0、false、null)

2.调用对象的构造函数(但是构造函数体还没有执行)

3.调用父类的构造函数。

4.使用初始化程序和初始块初始化成员。

5.执行构造方法。

看看实践中是怎么一步一步做的,看看下面的例子:

A级

一个(){

System.out.println("A.A调用");

}

}

B类扩展了A {

int I = f();

int j;

{

j = 37

System.out.println("执行初始化块");

}

B() {

System.out.println("B.B调用");

}

int f() {

system . out . println(" b . f called ");

返回47;

}

}

公共类CtorDemo2 {

公共静态void main(String args[]) {

B bobj = new B();

}

}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 构造方法的初始化顺序

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情