java java面向对象-多态的好处
20180315 java java面向对象-多态的好处
需求:给饲养员提供一个喂养动物的方法。 没有多态的情况: //饲养员 class Person { //喂养狗的方法 public void feed(Dog d) { System.out.prinyln("feeding..."); } //喂养猫的方法 public void feed(Cat c) { System.out.prinyln("feeding..."); } } class Animal { public void eat { System.out.prinyln("吃一般的食物"); } } //狗 class Dog extends Animal { public void eat { System.out.println("吃骨头"); } } //猫 class Cat extends Animal { public void eat { System.out.prinyln("吃鱼"); } } //引出多态 class AnimalDemo { public static void main(String[] args) { //创建饲养员对象 Person p = new person(); Dog d = new Dog(); p.feed(d);//饲养员喂狗 Cat c = new Cat(); p.feed();//饲养员喂猫 } } 我们发现针对于不同的动物,我们得提供不同的feed方法来喂养。 存在多态(只提供一个方法,就能统一喂养所有动物): //饲养员 class Person { //喂养所有的方法 public void feed(Animal a) { System.out.println("feeding..."); } } class Animal { public void eat() { System.out.prinyln("吃一般的食物"); } } //狗 class Dog extends Animal { public void eat { System.out.println("吃骨头"); } } //猫 class Cat extends Animal { public void eat { System.out.prinyln("吃鱼"); } } class AnimalDemo { public static void main(String[] args) { //创建饲养员对象 Person p = new person(); Dog d = new Dog(); p.feed(d);//饲养员喂狗 Cat c = new Cat(); p.feed(c);//饲养员喂猫 } } 多态的作用:当把不同的子类对象都当做父类类型来看待,可以屏蔽不同子类对象之间的实现差异,从而写出通用的代码达到通用编程,以适应需求的不断变化。
