Overlapping Methods Support Polymorphism

💡 原文约300字/词,阅读约需1分钟。
📝

内容提要

Java 的方法重写是一个基本特性,允许动态方法分派。当使用超类引用变量引用子类对象时,所执行的重写方法版本是在运行时根据对象的类型确定的。这使得由超类变量引用的不同类型的对象可以调用重写方法的不同版本。程序结构包括一个具有 "who()" 方法的超类和重写此方法的子类。在主函数中的执行演示了动态分派,其中执行的方法在运行时决定,从而实现多态性。

🎯

关键要点

  • 方法重写是 Java 的基本特性,允许动态方法分派。

  • 动态方法分派是在运行时解决对重写方法的调用,而不是在编译时。

  • 超类引用变量可以引用子类对象,调用重写方法时执行的版本取决于对象的类型。

  • 对象的类型决定了执行哪个版本的重写方法,而不是引用变量的类型。

  • 程序结构包括一个超类 Sup 和两个子类 Sub1 和 Sub2,它们重写了 who() 方法。

  • 在主函数中创建超类和子类对象,并通过超类引用变量调用方法。

  • 调用 supRef.who() 时,执行的版本基于引用的对象类型,而非 supRef 的类型。

  • 根据引用的对象类型,程序输出相应的 who() 方法版本,展示了动态分派和多态性。

延伸问答

Java 中方法重写的基本特性是什么?

方法重写是 Java 的基本特性,允许动态方法分派。

动态方法分派是如何工作的?

动态方法分派是在运行时解决对重写方法的调用,而不是在编译时。

超类引用变量如何影响方法调用?

超类引用变量可以引用子类对象,调用重写方法时执行的版本取决于对象的类型。

在 Java 中,如何实现多态性?

通过超类引用变量引用不同类型的子类对象,调用重写方法时根据对象类型决定执行版本,从而实现多态性。

程序中如何展示动态分派的概念?

在主函数中创建超类和子类对象,通过超类引用变量调用方法,输出相应的 who() 方法版本,展示动态分派。

调用 supRef.who() 时,执行哪个版本的方法?

执行的版本基于引用的对象类型,而非 supRef 的类型。

➡️

继续阅读