虚方法的使用
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
在本章节中我们将介绍被重写的方法怎样影响多态性。前面我们已经讨论了方法的重写,也就是子类能够重写父类的方法。当我们通过对象引用调用重写的方法时,实际上调用的是子类的方法,而不是父类中被重写的方法。
要想在子类中调用父类中被重写的方法时,我们必须使用关键词super
。
在下面的例子中,Sales和Employee类都定义了computePay
的方法,该方法用于计算员工的月薪资(默认情况下月薪资为年薪资的1/12),对于销售人员这里我们只发放全部工资的60%。
编译时,编译器检查到定义的e1,s1和e2变量所对应的类型(Employee类和Sales类)均包含computePay
方法,因此编译能够正常通过。在调用e1,s1和e2的computePay
时,Java虚拟机(JVM)则会根据实际的对象类型调用相应的computePay
方法。Java中所有的方法都能以这种方式表现,因此,重写的方法能在运行时被正确调用,而不管编译的时候源代码中引用变量是什么类型。
在线练习
{$ activeFileHint $}