怎么会是0呢 求大神赐教

qq569422395 2012-10-31 07:21:47
class AAA {
public AAA(){

this.test();
}

public void test() {
System.out.println("2222");
}


}
class BBB extends AAA{
int i = 10;
public BBB(){
}
public void test(){
System.out.println(i);
}

}

public class Text01 {
public static void main(String[] args) {
AAA a = new BBB();
}

}
...全文
122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ll894311655 2012-10-31
  • 打赏
  • 举报
回复
有点复杂啊~
qq569422395 2012-10-31
  • 打赏
  • 举报
回复
感谢楼上的各位了 小弟懂了
yh0123123 2012-10-31
  • 打赏
  • 举报
回复
第一句有点问题,不该是调用。。父类引用指向子类对象才对。
yh0123123 2012-10-31
  • 打赏
  • 举报
回复
父类引用调用子类对象,new的时候会先调父类的构造方法,其中调用了public void test()方法,这个方法子类同样有,父类的该方法被覆盖了,所以调的是子类的test方法,该方法打印的是i,但此时子类的i还未完成变量赋值,所以i的值是int类型默认赋的值0,打印出0.父类的构造完成后,才会进行i=10的赋值,然后开始执行子类的构造方法
nmyangym 2012-10-31
  • 打赏
  • 举报
回复
参考一下:
http://topic.csdn.net/u/20120730/01/ed1ffbf6-44bd-422d-a530-75c908590a17.html
qq569422395 2012-10-31
  • 打赏
  • 举报
回复
人呢? 求赐教

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧