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();
}
}