为什么使用子类方法定义?

时间:2014-10-31 21:18:37

标签: java class casting

Undergraduate ug = new Undergraduate (“Sam”, 999, 1);
Person p = (Person) ug // Type casting
p.writeOutput();

UndergraduatePerson的子类。本科生的方法writeOutput会覆盖Person中的方法。尽管变量writeOutput引用Undergraduate类型的对象,为什么调用p的{​​{1}}?

2 个答案:

答案 0 :(得分:8)

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

  

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

答案 1 :(得分:0)

Java很好,并调用undergraduate.writeoutput。除了本科以外,你不能调用人员方法。