黑马程序员技术交流社区

标题: java多态的问题 [打印本页]

作者: che201311    时间: 2013-11-22 16:05
标题: java多态的问题
class tes{
public static void main(String[] args)
{
     a a1=new b;
     System.out.println(a1);
}
}
class a{

int a=10;

}
class b extends a{

int a=20;
}
上面这段代码,会打印出10,但是根据java的动态绑定机制,a1实际类型其实是b 打印结果应该是20,那为什么实际结果是10呢?
作者: 习嘻嘻    时间: 2013-11-22 16:27
父类的方法会被重写,成员变量其实并没有被覆盖掉,子类的堆内存区域里还有父类的一片空间,里面存放着
父类的成员变量,因此父类引用调用成员变量找到的是自己的

太着急,代码写错了:

public static void main(String[] args)
{
     a a1=new b();
     System.out.println(a1.a);
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2