【问题标题】:Why is the subclass method definition used?为什么要使用子类方法定义?
【发布时间】:2014-10-31 21:18:36
【问题描述】:
Undergraduate ug = new Undergraduate (“Sam”, 999, 1);
Person p = (Person) ug // Type casting
p.writeOutput();

UndergraduatePerson 的子类。 Undergraduate 的方法writeOutput 覆盖了Person 中的方法。为什么调用UndergraduatewriteOutput,尽管变量p 引用了Person 类型的对象?

【问题讨论】:

  • 多态性。运行时类型被调用。

标签: java class casting


【解决方案1】:

这就是多态性。来自官方tutorials

Java 虚拟机 (JVM) 为每个变量中引用的对象调用适当的方法。它不调用由变量类型定义的方法。这种行为称为虚拟方法调用,它展示了 Java 语言中重要的多态特性的一个方面。

【讨论】:

    【解决方案2】:

    Java 很好,它调用了本科生.writeoutput。除了本科生外,你不能通过 super 调用 people 方法。

    【讨论】:

      猜你喜欢
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 2021-08-24
      • 2021-04-02
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多