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

use*_*874 1 java casting class

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

Undergraduate是儿童班的Person.本科生的方法writeOutput超越了Person.为什么writeOutput在的Undergraduate调用,虽然可变p类型的引用对象Person

man*_*uti 8

这就是多态性.从官方教程:

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