黑马程序员技术交流社区

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

作者: 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