Undergraduate ug = new Undergraduate (“Sam”, 999, 1);
Person p = (Person) ug // Type casting
p.writeOutput();
Undergraduate
是Person
的子类。本科生的方法writeOutput
会覆盖Person
中的方法。尽管变量writeOutput
引用Undergraduate
类型的对象,为什么调用p
的{{1}}?
答案 0 :(得分:8)
这就是多态性。来自官方tutorials:
Java虚拟机(JVM)为每个变量中引用的对象调用适当的方法。它不会调用由变量类型定义的方法。此行为称为虚方法调用,并演示了Java语言中重要多态性功能的一个方面。
答案 1 :(得分:0)
Java很好,并调用undergraduate.writeoutput。除了本科以外,你不能调用人员方法。