结果为0 很有意思 有木有!变量初始化顺序是显示初始化之后再构造方法初始化对吧,
答案为何如此,求详解
class Base
{
private int i = 2;
public Base()
{
System.out.println(i);
this.display();
}
public void display()
{
System.out.println(i);
}
}
class Derived extends Base
{
private int i = 22;
public Derived()
{
//System.out.println(i);
i = 222;
}
public void display()
{
System.out.println(i);
}
}
public class Test
{
public static void main(String[] args)
{
new Derived();
}
}
1.在调用构造初始化之前,会首先对成员变量进行自动初始化。
public class Counter {
int i;
Counter() {
i = 7 ;
}
}
i的值首先会被置为0,然后才是调用构造器,使得i变成7。
2.成员变量的初始化顺序为定义的先后顺序。
class Bowl {
Bowl(int mar......
答案就在这里:JAVA变量初始化顺序
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
本质上
private int i = 2;
其实这段代码还是放在构造函数中执行的,并且先于构造函数中你写的任何代码执行。
基类的构造函数先执行,再执行派生类的。
先对成员变量进行初始化,在调用构造函数