class Parent{
public int x = 10;
public void show(){
System.out.println("in Parent "+x);
}
public Parent(){
show();
}
}class Child extends Parent{
public int x = 20;
public void show(){
System.out.println("int Child "+x);
}
}public class TestConstructorPoly{
public static void main(String[]args){
new Child();
}
}结果输出是 int Child 0为什么子类里面的变量取不出来?
谁帮我分析下 谢谢!!
public int x = 10;
public void show(){
System.out.println("in Parent "+x);
}
public Parent(){
show();
}
}class Child extends Parent{
public int x = 20;
public void show(){
System.out.println("int Child "+x);
}
}public class TestConstructorPoly{
public static void main(String[]args){
new Child();
}
}结果输出是 int Child 0为什么子类里面的变量取不出来?
谁帮我分析下 谢谢!!
也就是说在你调用构造方法时,x=20这个操作还没有执行,此时x仅有一个默认的初始值0,所以,构造方法里面取得的x值是0。如果你在构造方法结束后,在调用show(),就会得到正确值了。
你可以试试这个,你就明白了。public class TestConstructorPoly {
public static void main(String[] args) {
new Child().show();
}
}结果是:int Child 0
int Child 20
,如果是new Parent();则会有值,或者把子类show()方法改名,效果又不一样,楼主可以试一下!
public int x = 10;
public Parent(){
System.out.println("in Parent "+x);
}
}
那么现在 我直接new一个Parent 这里x应该是0 为什么它又取到了x=10?