练习:猫狗案例多态版

/*
    猫狗案例多态版

    测试结果:
        猫吃鱼
        猫玩捉迷藏
        狗吃肉
        狗看门
*/
//动物类
class Animal{
    public Animal(){}

    public void eat(){
        System.out.println("吃饭");
    }
}

//狗类 继承动物
class Dog extends Animal{
    public Dog(){}

    //重写方法
    public void eat(){
        System.out.println("狗吃肉");
    }
    //狗类特有的功能
    public void lookDoor(){
        System.out.println("狗看门");
    }
}
//猫类 继承动物
class Cat extends Animal{ //我又一次忘了写extends...
    public Cat(){}

    //重写方法
    public void eat(){
        System.out.println("猫吃鱼");
    }
    //猫类特有的功能
    public void playGame(){
        System.out.println("猫玩捉迷藏");
    }
}

//测试类
class CatDogDuoTaiTest{
    public static void main(String[] args){
    //定义成猫
        Animal a= new Cat();
        a.eat();   //执行的是重写的方法
    //还原成猫
        /*--------想要执行Cat特有的方法:------*/
        Cat c= (Cat)a; //c引用了上面已有的猫对象(c指向了这个猫对象所在的堆内存空间 0x001)
        c.playGame();//这时便可以用猫特有的功能了
    //变成了狗  
        a= new Dog();//这里写的仍然是a,a又指向了一个狗对象
        a.eat();
    //还原成狗
        Dog d= (Dog)a;
        d.lookDoor();   
    }
}

猜你喜欢

转载自blog.csdn.net/u013317445/article/details/81672192