59.使用父类作为方法的形参,是Java中实现和使用多态的主要方式
60.使用父类作为方法的返回值,也是Java中实现和使用多态的主要方式
61.NullPointerException:空指针异常
public abstract class Animal {
     //动物叫
     public abstract void shout();
}
public class Cat extends Animal{
    public void shout() {
         System.out.println("喵喵喵");
     }
 }
public class Dog extends Animal{
    public void shout() {
         System.out.println("汪汪汪");
     }
 }
public class Duck extends Animal {
     public void shout() {
         System.out.println("嘎嘎嘎");
     }
 }
public class Master {
     //给朋友赠送动物为礼物
     //将父类类型作为返回值
     public Animal sendAnimal(int type){
         Animal animal=null;
         switch (type){
             case 1:
                 animal =new Cat();
                 break;
             case 2:
                 animal=new Dog();
                 break;
             case 3:
                 animal=new Duck();
                 break;
             default:
                 break;
         }
         return animal;
     }
     /*public Cat sendCat(){
         return new Cat();
     }
     public Dog sendDog(){
         return new Dog();
     }
    public Duck sendDuck(){
         return new Duck();
     }*/
 }
import java.util.Scanner;
public class Test {
     public static void main(String[] args) {
         Scanner input=new Scanner(System.in);
         Master master=new Master();
         //通过循环升级控制只能选择1-3
         System.out.println("朋友,你喜欢什么宠物!1.猫,2.狗,3,鸭子");
         int type=input.nextInt();
         master.sendAnimal(type);
         Animal animal=master.sendAnimal(type);
         //多态:根据具体动物子类,调用其重写后的shout()方法
         animal.shout();
     }
 }