java的多态

Posted 一字节

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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     }

 

以上是关于java的多态的主要内容,如果未能解决你的问题,请参考以下文章

每个人单核苷酸多态性(SNP)形成的原因是啥?

多态性和动态铸造

Java多态——代码复用性

Java 多态

java多态/重载方法——一个疑难代码引发的讨论

Java 多态