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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 15917846944 中级黑马   /  2015-7-26 12:31  /  245 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
        多态练习:猫狗案例
*/
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是代表父类的?


2 个回复

倒序浏览
a是父类类型,当然代表父类了,  只是现在a指向了 猫类的地址,然后因为Cat中有eat方法,所以a.eat()就调用的是子类的方法,多态的概念
回复 使用道具 举报
感谢大神!!!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马