主要代码 public abstract class Animal { public abstract void cry(); public abstract String getAnimalName(); } public class Simulator { public void playSound(Animal animal) { //根据上转型,参数为父类对象Animal,可以不必知道子类是什么对象 System.out.print(animal.getAnimalName()+":"); //操作子类重写的方法 animal.cry(); } } public class Dog extends Animal{ @Override public void cry() { System.out.println("汪汪汪"); //子类重写父类方法 } @Override public String getAnimalName() { return "小狗"; } } public class Cat extends Animal{ @Override public void cry() { System.out.println("喵喵喵"); } @Override public String getAnimalName() { return "小猫"; } public class Application { public static void main(String[] args) { Simulator simulator=new Simulator(); simulator.playSound(new Dog()); //创建子类对象并传递 simulator.playSound(new Cat()); } }