Dynamic Polymorphism in Java

2025年3月27日 | 阅读 3 分钟

在 Java 中,多态性是面向对象编程的一个概念,它允许我们以不同的形式执行单个操作。在本节中,我们将只讨论Java 中的动态多态性。

多态

多态性这个词由两个词组成,即ploymorphs。Poly 的意思是,morphs 的意思是不同的形式。简而言之,一种以多种方式执行单个操作的机制。

让我们通过一个现实世界的例子来理解多态性的含义。

一个人在商店是顾客,在办公室是雇员,在家是丈夫/父亲/儿子,在聚会上是客人。因此,同一个人在不同的地方扮演着不同的角色。这被称为多态性。

多态性类型

Java 中有两种多态性:

  • 静态多态性(编译时多态性)
  • 动态多态性(运行时多态性)
Dynamic Polymorphism in Java

动态多态性

动态多态性是一种过程或机制,其中对被重写方法的调用在运行时而不是编译时解析。它也称为运行时多态性动态方法分派。我们可以通过方法重写来实现动态多态性。

在这个过程中,通过超类的引用变量调用被重写的方法。要调用的方法的确定基于引用变量所引用的对象。

动态多态性的特性

  • 它决定了在运行时执行哪个方法。
  • 可以通过动态绑定来实现。
  • 它发生在不同的类之间。
  • 当子类对象被赋值给超类对象以实现动态多态性时,它就变得很重要。
  • 动态多态性涉及继承。

方法重写

它为父类中已存在的方法提供了特定的实现。它用于实现运行时多态性。请记住,无法重写静态方法。因此,我们也无法重写 main() 方法,因为它是一个静态方法。

方法重写的规则

  • 方法的名称必须与父类方法的名称相同。
  • 参数的数量和参数的类型必须与父类中的相同。
  • 必须存在 IS-A 关系(继承)。

我们通过父类的引用来调用被重写的方法。对象的类型决定了哪个方法将被调用,它由JVM 在运行时确定。

动态多态性示例

在以下示例中,我们创建了两个名为SampleDemo的类。Sample 类是父类,Demo 类是子类派生类。子类正在重写父类的 dispaly() 方法。

我们将子类对象赋值给了父类引用。因此,为了确定将调用哪个方法,对象的类型将由 JVM 在运行时决定。是对象的类型决定了将调用哪个版本的方法(而不是引用的类型)。

Demo.java

输出

Overriding Method

方法重写示例

DynamicPolymorphismExample.java

输出

The child class method is invoked.

在上面的示例中,我们使用了 @Override 注解。它表明子类方法正在重写其基类方法。