上面代码输出结果:
Derived method called ...
解释:Base
类的方法 baseMethod()
在 Derived
类中被覆盖。 在 Test
类中,引用变量 b(类型为 Base 类)指的是 Derived 类的实例。 在这里,在类 Base 和 Derived 之间实现了运行时多态性。 在编译时,检查 Base 类中方法 baseMethod 的存在,如果存在则程序编译,否则将显示编译器错误。 在这种情况下,baseMethod 存在于 Base 类中; 因此,它编译成功。 但是,在运行时,它会检查 baseMethod 是否已被 Derived 类覆盖,如果是,则调用 Derived 类方法,否则调用 Base 类方法。 在这个示例代码中,Derived 类会覆盖 baseMethod; 因此,调用了 Derived 类方法。