黑马程序员技术交流社区

标题: 关于继承的问题 [打印本页]

作者: 15917846944    时间: 2015-7-26 12:31
标题: 关于继承的问题
/*
        多态练习:猫狗案例
*/
class Animal {
        public void eat(){
                System.out.println("吃饭");
        }
}

class Dog extends Animal {
        public void eat() {
                System.out.println("狗吃肉");
        }
       
        public void lookDoor() {
                System.out.println("狗看门");
        }
}

class Cat extends Animal {
        public void eat() {
                System.out.println("猫吃鱼");
        }
       
        public void playGame() {
                System.out.println("猫捉迷藏");
        }
}

class DuoTaiTest {
        public static void main(String[] args) {
                //定义为狗
                Animal a = new Dog();
                a.eat();
                System.out.println("--------------");
                //还原成狗
                Dog d = (Dog)a;
                d.eat();
                d.lookDoor();
                System.out.println("--------------");
                //变成猫
                a = new Cat();
                a.eat();
                System.out.println("--------------");
                //还原成猫
                Cat c = (Cat)a;
                c.eat();
                c.playGame();
                System.out.println("--------------");
               
                //演示错误的内容
                //Dog dd = new Animal();
                //Dog ddd = new Cat();
                //ClassCastException
                //Dog dd = (Dog)a;


请问:
//变成猫
                a = new Cat();
                a.eat();
                System.out.println("--------------");
a是代表父类的?



作者: 悲伤丿心    时间: 2015-7-26 14:01
a是父类类型,当然代表父类了,  只是现在a指向了 猫类的地址,然后因为Cat中有eat方法,所以a.eat()就调用的是子类的方法,多态的概念
作者: 15917846944    时间: 2015-7-26 22:57
感谢大神!!!!!!




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