何为虚拟方法?何为虚拟方法调用呢?
       子类中定义了与父类同名同参数的方法,在多态的情况下,此时父类
    中得方法被称为虚拟方法。父类根据赋给的不同子类对象,动态的调
    用属于子类的该方法即为虚拟方法调用。这种方法调用在编译期是无法确定的。

以下是正常方法调用与虚拟方法调用的区别:

正常方法调用:

//这里的Student类是Person类的子类

 Person p = new Person();
 p.study();  //Person类中得study()方法
 Student s = new Student();
 s.study();  //Student类中得study()方法

虚拟方法调用(在多态情况下):

 Person ps = new Student();
 ps.study();  //调用的是Student类中得study()方法

编译时类型和运行时类型:
编译时 ps 的类型为 Person 类型,而方法的调用是运行时决定的,所以在运行时调用的
是 Student 类中得 study() 方法。这种过程叫做动态绑定。

最后修改:2021 年 06 月 29 日 10 : 05 AM
如果觉得我的文章对你有用,请随意赞赏