多态
对象的多态性,父类的引用指向子类的对象
多态的使用,当调用父类同名同参数时,实际执行的是子类重写父类的方法
在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。(编译看左边父,运行看右边子)
我的理解:声明父类,new子类,简化代码。编译期定义虚拟父类,运行时确定具体子类。
虚拟方法调用
正常方法调用:
Person e = new Person();
e.eat();
Student e = new Student();
e.eat();
虚拟方法调用(多态情况下):
子类中定义了与父类同名同参数的方法(重写),在多态情况下,将此时父类的方法称为虚方法,父类根据赋给它的不同子类对象,动态调用属于子类的该方法。这样的方法调用在编译期是无法确定的。
Person e = new Student();
e.eat();
编译时类型和运行时类型
编译时e为Person类型,而方法的调用是在运行时确定的,所以调用的是Student类的eat方法----动态绑定
评论区