new SubDemo()先调用父类的构造方法,父类执行display(),这个display()是父类本身的,打印i,这时父类的i还没有进行显示初始化,所以打印的是默认的0.具体可看毕老师讲的。作者: 全超 时间: 2013-3-23 00:39
class Base {
private int i = 2;//本类中的i私有的对子类无效
public Base() { //new SubDemo对象时初始化方法先是找的Base的构造函数
this.display();
}
public void display() {
System.out.println(0);
}
}
class SubDemo extends Base {
private int i = 22;
public SubDemo() {
//因为继承关系这里应该是隐式父类的构造函数Base()
//这里就先执行下面的方法再执行赋值语句i=222;i默认为0
i = 222;
}
public void display() {
System.out.println(i);//并且这里的i是局部变量未赋值,只在这个方法中有效跟上面i无关。
}
}
public class TestSuperDemo {
public static void main(String[] args) {
new SubDemo();
}
}作者: 马利 时间: 2013-3-23 00:43
王晓楠 发表于 2013-3-23 00:31
new SubDemo()先调用父类的构造方法,父类执行display(),这个display()是父类本身的,打印i,这时父类的i ...