欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

76.Java中的虚方法调用

程序员文章站 2022-04-29 09:34:08
...

我们前面已经知道了,在多态的情况下,声明为父类类型的引用变量只能访问父类中定义过的方法,但如果此变量实际引用的是子类的对象,而子类中又进行了方法覆盖时,实际调用的是子类中覆盖后的方法,这种机制称为虚方法调用


在使用多态的情况下,有可能出现编译时类型和运行时的类型不一致的问题,如上面的例子中:
public class CalClass{
 .. …
 public int calPersonBirthYear(Person p) {
  // 根据参数p的年龄来计算出生年代
 }
}


在编译的时候,方法calPersonBirthYear 的参数类型是Person的,而在运行的时候,可能就是Student 或Teacher或Person或其他的Person子类类型了。