黑马程序员技术交流社区
标题:
多态的特点问题
[打印本页]
作者:
vaqh
时间:
2014-7-27 21:57
标题:
多态的特点问题
class Animal
{
int num = 4;
void eat()
{
System.out.println("吃...");
}
static void sleep()
{
System.out.println("睡觉。。。");
}
}
class Cat extends Animal
{
int num = 5;
void eat()
{
System.out.println("吃鱼");
}
static void sleep()
{
System.out.println("cat睡觉。。。");
}
}
class Test
{
public static void main(String[] args) {
Animal a = new Cat();
a.eat();
a.sleep();
System.out.println(a.num);
}
}
以上代码的执行结果是什么?为什么呢?请给出解释?感觉太复杂了
作者:
hjfeng1987
时间:
2014-7-27 23:51
毕老师的三句总结
成员变量 编译和运行都参考等号的左边。所以是 a.num是左边的父类的num
成员函数,依赖的是对象, 编译看左边,运行看右边。因为成员函数存在覆盖特性。所以是 a.eat()是右边的子类的eat()
静态函数,依赖的是类. 编译和运行都参考等号的左边。所以是 a.sleep()是左边的父类的sleep()
作者:
vaqh
时间:
2014-7-27 23:55
hjfeng1987 发表于 2014-7-27 23:51
毕老师的三句总结
成员变量 编译和运行都参考等号的左边。所以是 a.num是左边的父类的num
成员函数,依 ...
精髓啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2