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("猪吃猪饲料");
}
}