多态的好处和弊端
1 package duoTai02; 2 /* 3 多态中成员访问特点 4 成员变量:编译看左边,执行看左边 5 成员方法:编译看左边,执行看右边 6 7 原因:因为成员方法有重写,而成员变量没有 8 */ 9 public class AnimalDemo { 10 public static void main(String[] args) { 11 //有父类引用指向子类对象 12 Animal a =new Cat(); 13 14 System.out.println(a.age); 15 // System.out.println(a.weight); 16 17 a.eat(); 18 //a.playGame(); 19 } 20 }
1 package duoTai03; 2 3 public class Cat extends Animal{ 4 5 @Override 6 public void eat() { 7 System.out.println("猫吃鱼"); 8 } 9 }
1 package duoTai03; 2 3 public class Dog extends Animal{ 4 5 @Override 6 public void eat() { 7 System.out.println("狗吃骨头"); 8 } 9 10 public void lookDoor(){ 11 System.out.println("狗看门"); 12 } 13 }
1 package duoTai03; 2 3 public class AnimalOperator { 4 5 /* public void useAnimal(Cat c){ 6 c.eat(); 7 } 8 9 public void useAnimal(Dog d){ 10 d.eat(); 11 }*/ 12 13 public void useAnimal(Animal a){ 14 a.eat(); 15 // a.loolDoor(); 16 } 17 }
1 package duoTai03; 2 /* 3 多态的好处和弊端 4 多态的好处:提高了程序的扩展性 5 具体体现:定义方法的时候,使用父类型作为差数,将来在使用的时候,使用具体的值类型参与操作 6 多态的弊端: 7 不能使用子类的特有功能 8 * */ 9 public class AnimalDemo { 10 11 public static void main(String[] args) { 12 //创建动物操作类的对象,调用方法 13 AnimalOperator ao = new AnimalOperator(); 14 Cat c = new Cat(); 15 ao.useAnimal(c); 16 17 Dog d = new Dog(); 18 ao.useAnimal(d); 19 } 20 }