java学习

public class Test {

    public static void main(String[] args) {

      show(new Cat());  // 以 Cat 对象调用 show 方法

      show(new Dog());  // 以 Dog 对象调用 show 方法

               

      Animal a = new Cat();  // 向上转型 

      a.eat();              // 调用的是 Cat 的 eat

      Cat c = (Cat)a;        // 向下转型 

      c.work();        // 调用的是 Cat 的 work

  } 

           

    public static void show(Animal a)  {

      a.eat(); 

        // 类型判断

        if (a instanceof Cat)  {  // 猫做的事情

            Cat c = (Cat)a; 

            c.work(); 

        } else if (a instanceof Dog) { // 狗做的事情

            Dog c = (Dog)a; 

            c.work(); 

        } 

    } 

}

abstract class Animal { 

    abstract void eat(); 

 

class Cat extends Animal { 

    public void eat() { 

        System.out.println("吃鱼"); 

    } 

    public void work() { 

        System.out.println("抓老鼠"); 

    } 

 

class Dog extends Animal { 

    public void eat() { 

        System.out.println("吃骨头"); 

    } 

 

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容