Java 中的动态方法分派或运行时多态性


可以通过方法重写来实现 Java 中的运行时多态性,其中子类重写父类中的方法。被重写的方法在父类中基本上处于隐藏状态,在子类没有在重写的方法中使用 super 关键字时不会被调用。此方法调用解析在运行时发生,称为动态方法分派机制。

示例

让我们看一个示例。

class Animal {
   public void move() {
      System.out.println("Animals can move");
   }
}

class Dog extends Animal {
   public void move() {
      System.out.println("Dogs can walk and run");
   }
}

public class TestDog {

   public static void main(String args[]) {
   
      Animal a = new Animal(); // Animal reference and object
      Animal b = new Dog(); // Animal reference but Dog object

      a.move(); // runs the method in Animal class
      b.move(); // runs the method in Dog class
   }
}

这将产生以下结果 -

输出

Animals can move
Dogs can walk and run

在上面的示例中,您可以看到,即使b 是动物类型,它也会在 Dog 类中运行 move 方法。原因是:在编译期,对引用类型进行了检查。但是,在运行时,JVM 会找出对象类型,并运行属于特定对象的方法。

因此,在上面的示例中,该程序将正确编译,因为 Animal 类具有 move 方法。然后,在运行时,它会为该对象运行特定方法。

已于下列日期更新:21-6-2020

10K+ 浏览次数

开启你的 职业生涯

完成课程即可获得认证

立即开始
广告