黑马程序员技术交流社区

标题: 多态 [打印本页]

作者: 张涛的狂怒    时间: 2014-8-3 12:47
标题: 多态
本帖最后由 张涛的狂怒 于 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???
作者: 江苏孙浩    时间: 2014-8-3 12:50
成员变量不会动态绑定。f是Fu类型的,所以就使用Fu类型中定义的那个num
作者: 张涛的狂怒    时间: 2014-8-3 13:13
江苏孙浩 发表于 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);
}
}
这样又会怎么样?
作者: 继续悲伤    时间: 2014-8-3 13:15
总结一下:
A:成员变量:
编译看左边,运行看左边;
B:成员方法:
编译看左边,运行看右边。按这个结论就是3!好好琢磨,自己用代码试一下!
作者: 张涛的狂怒    时间: 2014-8-3 13:20
继续悲伤 发表于 2014-8-3 13:15
总结一下:
A:成员变量:
编译看左边,运行看左边;

三克油:)
作者: 江苏孙浩    时间: 2014-8-3 13:40
张涛的狂怒 发表于 2014-8-3 13:13
class Fu{

}

这个可以自己编译一下看看,顺便可以多尝试几种情况




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