多态性指的是“有多种形式”的概念,它发生在通过继承相互关联的类的层次结构中。
对成员方法的调用将导致执行不同的实现,具体取决于调用该方法的对象的类型。
下面是一个例子:Dog和Cat是从Animal类继承的类。每个类都有自己的makeSound()方法实现。
class Animal { public void makeSound() { System.out.println("Grr..."); } } class Cat extends Animal { public void makeSound() { System.out.println("Meow"); } } class Dog extends Animal { public void makeSound() { System.out.println("Woof"); } }
由于所有猫和狗的物体都是动物物体,我们主要可以做以下工作:
public static void main(String[ ] args) { Animal a = new Dog(); Animal b = new Cat(); }
我们创建了两个动物类型的参考变量,并将它们指向猫和狗对象。
现在,我们可以调用makeSound()方法。
a.makeSound(); // 输出 "Woof" b.makeSound(); // 输出 "Meow"
由于引用变量a包含Dog对象,因此将调用Dog类的makeSound()方法。 这同样适用于b变量。
这说明您可以使用Animal变量,而不必实际知道它包含子类的对象。 当您拥有超类的多个子类时,这非常有用。