本帖最后由 吴刚 于 2013-5-29 11:43 编辑
- <DIV class=blockcode>
- <BLOCKQUOTE>
- <BLOCKQUOTE>
复制代码
class A
{
int i =5;
}
class B extends A{
public B(){
i = 7;
}
}
public class Demo1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
A a = new B();
System.out.println(a.i);
}
}
输入的结果是7!!!
我问了很多人,给了我好几种解释
老湿说过成员变量编译看左边,运行看左边,所以我一直认为是5啊,结果问了下同学,自己又思考了下,难道是因为子类和父类共用一个成员变量i吗?但是又有别的同学告诉我说输出a.i的a本质是B类型,所以本质上输出的就是B.i,我表示很凌乱啊凌乱啊..
|