目录
多态的应用
多态数组
数组的定义类型为父类类型,里面保存的实际元素类型为子类类型。
应用实例
父类person有name和age子类,构造器和set方法。
还有一个say方法返回名字和年龄。
person的子类student,有私有属性score。
重写父类say方法。
同样是person的子类teacher,有私有属性salary。
teacher类里也重写say方法。
使用一个Person类型的数组存储,使用for循环遍历数组。
由于动态绑定机制,是什么运行类型,就调用那个运行类型的方法,所以可以运行我们想要运行的say方法。
应用实例升级
子类的特有方法如何调用?
特有方法teach。
特有方法study。
当我们试图直接调用teach和study方法时会报错,因为能调用什么方法是看编译类型,编译类型为Person,而Person类里没有teach和study方法,所以不能调用。
解决方法是,可以使用instanceof方法来判断它的运行类型,再依据它的运行类型来进行向下转型,这样就可以调用这个运行类型的特定方法了。
多态参数
应用实例1
主人喂食动物。
应用实例2
annual是年度的意思。
父类employee有getAnnual方法。
普通员工worker继承employee,有特有的work方法,重写了getAnnual方法。
子类manager继承父类employee,有特有属性bonus(奖金)。
有特有方法manage并且重写了getAnnual方法。
方法showEmpAnnual,可以得到员工的年工资。使用动态绑定机制,可以调用worker和manager重写后的getAnnual方法。
方法testWork,使用向下转型操作,可以调用worker和manager特有的方法。