java的多态

 1     public static void show(Animal1 a){
 2         a.eat();
 3         if (a instanceof Cat){//判断a是哪个类new出来的对象
 4             Cat cat =(Cat)a; //因为a是Animal1的对象,它可以指向猫或者狗,所以到了这一步得指向相应的类对象
 5             cat.work();
 6             ((Cat) a).work();
 7         }
 8         if (a instanceof Dog1){
 9             Dog1 dog = (Dog1)a;
10             dog.work();
11         }
12     }
13     abstract static class Animal1{//抽象类的方法必须由子类来实现,除非抽象类的方法也是抽象方法
14         abstract void eat();
15     }
16     public static class Cat extends Animal1{
17         public void eat(){
18             System.out.println("猫吃鱼");
19         }
20         public void work(){
21             System.out.println("猫抓老鼠");
22         }
23     }
24     public static class Dog1 extends Animal1{
25         public void eat(){
26             System.out.println("狗吃骨头");
27         }
28         public void work(){
29             System.out.println("狗看家");
30         }
31     } 
32     public static void main(String[] args) {
33         show(new Cat());  // Animal1 a = new Cat(); 创建的是Animal1的对象,此时它可以指向猫,也可以指向狗
34         show(new Dog1());
35         Animal1 am = new Cat();
36         show(am);
37         am.eat();
38         Cat c = new Cat();
39         c.work();
40         Dog1 dg = new Dog1();
41     }
原文地址:https://www.cnblogs.com/OSKnown/p/8677688.html