多态基本知识思维导图 多态的代码实现,注意父类对象引用指向子类对象引用(向上转型)的方法,父类就可以调用子类重写的方法和派生的方法,但不能调用子类特有的方法: class Animal { public void makeSound() { // 基类方法 System.out.println("Animal makes a sound"); } } class Dog extends Animal { @Override public void makeSound() { // 子类方法重写 System.out.println("Dog barks"); } public void playBall() { System.out.println("Dog likes playing balls"); } } class Cat extends Animal { @Override public void makeSound() { // 子类方法重写 System.out.println("Cat meows"); } } public class Main { public static void main(String[] args) { // Example 1: 向上转型 // 父类对象引用指向子类对象引用:向上转型/自动转型/隐式转型 Animal animal1 = new Dog(); Animal animal2 = new Cat(); // 使用父类对象调用子类重写的方法 animal1.makeSound(); // 调用子类Dog的重写方法,输出 "Dog barks" animal2.makeSound(); // 调用子类Cat的重写方法,输出 "Cat meows" // Example 2: 向下转型,需要强制类型转换 // instansof: 判断一个对象是不是一个类的实例 if(animal1 instanceof Dog){ Dog dog = (Dog)anotherAnimal; dog.playBall(); } } } 上面说父类无法调用子类特有对象,但可以通过向下转型实现,如Example2实现。