原文: https://javatutorial.net/java-polymorphism-example

该示例演示了 Java 编程语言中多态的用法

什么是多态

多态一词来自希腊语,意思是“许多形式”。 Java 中的多态允许类的子类定义其自己的独特行为,而又共享父类的某些相同功能。 我将从继承的角度讨论多态,在继承中,名称相同的多个方法的功能稍有不同。 此技术也称为方法覆盖。

多态是面向对象编程(OOP)背后的四个主要概念之一。 OOP 问题在求职面试中很常见,因此您可能会在下次 Java 求职面试中遇到有关多态的问题。

Java 多态示例

在此示例中,我们将创建 3 个类来演示多态,并创建一个类来测试该概念。 我们的超类称为Animal。 动物类的后继者是DogCat类。 这些也是动物,对不对? 这就是多态所在 - 同一对象的多种形式具有不同的行为。 为了说明这一点,我们将使用一种名为makeSound()的方法,并在后继类中重写此方法的输出。

Java 多态示例 - 图1

Java 多态示例

当我们调用makeSound()方法时,通用动物类将输出一些抽象文本:

  1. package net.javatutorial;
  2. public class Animal {
  3. public void makeSound() {
  4. System.out.println("the animal makes sounds");
  5. }
  6. }

扩展了AnimalDog类将产生稍微不同的结果–狗将吠叫。 为此,我们扩展了Animal类并覆盖了makeSound()方法

  1. package net.javatutorial;
  2. public class Dog extends Animal{
  3. @Override
  4. public void makeSound() {
  5. System.out.println("the dog barks");
  6. }
  7. }

显然,我们必须对Cat类执行相同的操作才能制作出猫叫声。

  1. package net.javatutorial;
  2. public class Cat extends Animal {
  3. @Override
  4. public void makeSound() {
  5. System.out.println("the cat meows");
  6. }
  7. }

最后,让我们测试一下我们的创作。

  1. package net.javatutorial;
  2. public class PolymorphismExample {
  3. public static void main(String[] args) {
  4. Animal animal = new Animal();
  5. animal.makeSound();
  6. Dog dog = new Dog();
  7. dog.makeSound();
  8. animal = new Cat();
  9. animal.makeSound();
  10. }
  11. }

首先,我们创建一个常规的Animal对象并调用makeSound()方法。 我们对新创建的Dog对象执行相同的操作。 现在请注意对animal = new Cat()的调用 - 我们将新的Cat对象分配给Animal对象。 猫是动物,还记得吗? 因此,我们总是可以这样做:

  1. Animal animal = new Cat();

通过调用此对象的makeSound()方法,实际上将调用Cat类中的重写的makeSound()方法。

最后,这是程序的输出

  1. the animal makes sounds
  2. the dog barks
  3. the cat meows

参考文献

官方 Oracle 多态示例