多态性
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方法一般用于子类为无参构造
浙公网安备 33010602011771号