多态性指的是“有多种形式”的概念,它发生在通过继承相互关联的类的层次结构中。
对成员方法的调用将导致执行不同的实现,具体取决于调用该方法的对象的类型。
下面是一个例子: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变量,而不必实际知道它包含子类的对象。 当您拥有超类的多个子类时,这非常有用。