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);//饲养员喂猫
  } 
}




多态的作用:当把不同的子类对象都当做父类类型来看待,可以屏蔽不同子类对象之间的实现差异,从而写出通用的代码达到通用编程,以适应需求的不断变化。







































































你可能感兴趣的:(java课程)