使用父类作为方法形参实现多态
使用父类作为返回值实现多态
什么是多态:多种形态。
分两部分:
- 功能多态:一个行为多种实现方式 体现:重写和重载
- 形态多态:一个类型的多种表现形式比如:动物多种表现形式:猫、狗
Animal a=new Dog();//父类的引用指向子类的对象(即向上转型),反过来不行
多态的应用
- 向上转型:父类引用指向子类对象
- 向下转型:父类引用显式类型转换为子类对象
使用父类作为方法返回值实现多态//工厂模式
使用多态实现宠物领养
使用父类作为方法返回值
实现思路
在Master类添加领养方法getPet(String typeId )
创建测试类,根据主人选择宠物类型编号来领养宠物。
父类到子类的转换
问题描述
实现主人与宠物玩耍功能
和狗狗玩接飞盘游戏,狗狗的健康值减少10,与主人亲密度增加5。
和企鹅玩游泳游戏,企鹅的健康值减少10,与主人亲密度增加5。
问题分析
给Dog添加接飞盘方法catchingFlyDisc( )
给Penguin添加游泳方法swimming( )
给主人添加play(Pet pet)方法
代码实现以及问题
向下转型(强制类型转换)
为了避免类型转换报错,使用instanceof运算符进行类型判断,判断的结果为布尔值类型。
语法结构:
对象 instanceof 类或接口
使用场合:instanceof通常和强制类型转换结合使用。