JavaSE-11.1.2【多态的利弊】
package day2.yubaby01.p2; /* 1.3 多态的利弊 好处 提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作 弊端 不能使用子类的特有成员 */ public class AnimalDemo { public static void main(String[] args) { AnimalOperator ao = new AnimalOperator(); Cat c = new Cat(); ao.useAnimal(c); Dog d = new Dog(); ao.useAnimal(d); Pig p = new Pig(); ao.useAnimal(p); } }
package day2.yubaby01.p2; public class AnimalOperator { /*public void uesAnimal(Cat cc){ //Cat cc = new Cat() cc.eat(); } public void useAnimal(Dog dd){ //Dog dd = new Dog() dd.eat(); }*/ public void useAnimal(Animal a){ // Animal a = new Cat() // Animal a = new Dog() // Animal a = new xxx() // .... a.eat(); // -->多态好处:提高程序的扩展性 // a.lookDoor(); //error --> 多态弊端:无法使用子类的特有成员 } }
package day2.yubaby01.p2; public class Animal { public void eat(){ System.out.println("动物进食"); } }
package day2.yubaby01.p2; public class Cat extends Animal{ @Override public void eat(){ System.out.println("猫吃草?"); } }
package day2.yubaby01.p2; public class Dog extends Animal{ @Override public void eat(){ System.out.println("狗吃屎?"); } public void lookDoor(){ System.out.println("看门狗"); } }
package day2.yubaby01.p2; public class Pig extends Animal{ @Override public void eat(){ System.out.println("猪吃猪饲料"); } }