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

© 张涛的狂怒 中级黑马   /  2014-8-3 12:47  /  1109 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张涛的狂怒 于 2014-8-6 10:01 编辑

class Fu{
int num=3;
}
clsaa Zi extends Fu{
int num=4;
}
class Test{
public static void main(String [] args){
Fu f=new Zi();
System.out.prinln(f.n);
}
}
为什么结果输出是3???

5 个回复

倒序浏览
成员变量不会动态绑定。f是Fu类型的,所以就使用Fu类型中定义的那个num

评分

参与人数 1黑马币 +5 收起 理由
fantacyleo + 5 成员变量不参与多态判定,能点出这句本质的.

查看全部评分

回复 使用道具 举报
江苏孙浩 发表于 2014-8-3 12:50
成员变量不会动态绑定。f是Fu类型的,所以就使用Fu类型中定义的那个num

class Fu{

}
clsaa Zi extends Fu{
int num=4;
}
class Test{
public static void main(String [] args){
Fu f=new Zi();
System.out.prinln(f.n);
}
}
父类没有num对象呢?
class Fu{
num=3;
}
clsaa Zi extends Fu{
int num=4;
}
class Test{
public static void main(String [] args){
Zi f=new Zi();
System.out.prinln(f.n);
}
}
这样又会怎么样?
回复 使用道具 举报
总结一下:
A:成员变量:
编译看左边,运行看左边;
B:成员方法:
编译看左边,运行看右边。按这个结论就是3!好好琢磨,自己用代码试一下!
回复 使用道具 举报
继续悲伤 发表于 2014-8-3 13:15
总结一下:
A:成员变量:
编译看左边,运行看左边;

三克油:)
回复 使用道具 举报

这个可以自己编译一下看看,顺便可以多尝试几种情况
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马