A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© che201311 中级黑马   /  2013-11-22 16:05  /  981 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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呢?

1 个回复

倒序浏览
父类的方法会被重写,成员变量其实并没有被覆盖掉,子类的堆内存区域里还有父类的一片空间,里面存放着
父类的成员变量,因此父类引用调用成员变量找到的是自己的

太着急,代码写错了:

public static void main(String[] args)
{
     a a1=new b();
     System.out.println(a1.a);
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马