多态性

 1 package OOP;
 2 /**
 3  * 多态性:可以理解为一个事物的多种形态
 4  * 父类的引用指向子类的对象
 5  * 多态性的前提:1;必须要有继承关系;2;必须子类重写父类方法
 6  *多态性的使用:减少代码量,一般建立一个父类,多个子类继承重写之后,在测试类中建立一个func方法用来调用所有重写的方法
 7  * func方法的形参为父类类型的形参:public void func(Animal animal)
 8  * 其中形参完整的表示为Animal animal=new Dog();或者new Cat();多态的体现
 9  */
10 
11 import com.sun.prism.shader.Solid_RadialGradient_REFLECT_Loader;
12 
13 public class Demo3  {
14     public static void main(String[] args) {
15         Demo3 demo3=new Demo3();
16         demo3.func(new Dog());
17         demo3.func(new Cat());//多态的使用是为了减少代码量,
18         //不使用多态的话,如果想要调用子类的方法,必须要new一个相应的对象,然后通过对象调用,
19         //如果子类太多,则会导致代码量冗余。如下两句声明
20         Dog dog=new Dog();
21         dog.Eat();
22     }
23 
24 public void func(Animal animal){
25     animal.name();
26     animal.Eat();
27 }
28 }
29 class Animal{
30     public void name(){
31         System.out.println("名字");
32     }
33     public void  Eat(){
34         System.out.println("吃什么东西");
35     }
36 
37 }
38 class Dog extends Animal{
39     public void name(){
40         System.out.println("");
41     }
42     public void  Eat(){
43         System.out.println("狗吃骨头");
44     }
45 }
46 class Cat extends Animal{
47     public void name(){
48         System.out.println("");
49     }
50     public void  Eat(){
51         System.out.println("猫吃鱼");
52     }
53 
54 }

多态只适用于方法:编译看左边,运行看右边。属性不存在多态性!,建立func方法一般用于子类为无参构造

posted @ 2021-09-15 17:57  tiiiiii  阅读(75)  评论(0)    收藏  举报