JavaSE
学习要点
多态的优势和应用场合 父类和子类之间的类型转换 instanceof运算符的使用 父类作为方法形参实现多态 父类作为返回值实现多态使用多态的原因
需求描述:
在宠物管理系统中,宠物饿了,需要主人给他喂食,不同的宠物吃不一样的东西,并且健康值恢复情况也不一样。
狗狗:吃狗粮,吃完后健康值增加3。
企鹅:吃鱼,吃完后健康值增加5。
问题分析:
狗狗类:增加狗狗吃食的方法
企鹅类:增加企鹅吃食的方法
创建主人类:编写给狗狗喂食的方法,编写给企鹅喂食的方法
编写测试方法:调用主人类给狗狗喂的方法,调用主人类给企鹅喂的方法
编码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Master {
public void feed( Dog dog ) {
dog.eat();
}
public void feed( Penguin pgn ) {
pgn.eat();
}
public void feed( XXX xxx ) {
xxx.eat();
}
}
编码实现存在的问题
随着宠物的增多,代码需要不断修改,代码可扩展性太差。 主人喂食方法的参数都是Pet子类,是否可以采用feed(Pet pet)实现? 使用多态实现!多态
生活中的多态
都是打印机,但是不同类型的打印机,打印出的效果是不同的。
同一事物,由于条件不同,产生的结果也是不同的。
程序中的多态
多态:同一个引用类型,使用不同的实例而执行不同操作。程序中使用父类定义引用,使用子类对象运行。
如何使用多态
编写父类 编写子类,子类重写父类方法 运行时,使用父类的类型,子类的对象(黄色部分为实现多态两个要素)1
向上转型:Pet pet = new Dog();
实现多态的两种形式
使用父类作为方法形参实现多态
使用父类作为方法返回值实现多态
上机练习
使用多态实现宠物管理系统的喂食。
增加猫,猫吃猫粮,健康值增加5。
使用父类作为方法返回值实现多态//工厂模式
使用多态实现宠物领养
使用父类作为方法返回值
实现思路
在Master类添加领养方法getPet(String typeId )
创建测试类,根据主人选择宠物类型编号来领养宠物。
父类到子类的转换
问题描述
实现主人与宠物玩耍功能
和狗狗玩接飞盘游戏,狗狗的健康值减少10,与主人亲密度增加5。
和企鹅玩游泳游戏,企鹅的健康值减少10,与主人亲密度增加5。
问题分析
给Dog添加接飞盘方法catchingFlyDisc( )
给Penguin添加游泳方法swimming( )
给主人添加play(Pet pet)方法
代码实现以及问题
向下转型(强制类型转换)
为了避免类型转换报错,使用instanceof运算符进行类型判断,判断的结果为布尔值类型。
语法结构:
对象 instanceof 类或接口
使用场合:instanceof通常和强制类型转换结合使用。
上机练习
优化宠物管理系统,使用多态实现主人领养宠物并与宠物玩耍。
主人根据宠物编号领养宠物。 主人和狗狗玩接飞盘游戏,狗狗健康值减少10,与主人亲密度增加5。 主人和企鹅玩游泳游戏,企鹅健康值减少10,与主人亲密度增加5。总结
多态可以减少类中代码量,可以提高代码的可扩展性和可维护性
向上转型——子类转换为父类,自动进行类型转换 向下转型——父类转换为子类,结合instanceof运算符进行强制类型转换实现多态的两种方式
使用父类作为方法形参实现多态 使用父类作为方法返回值实现多态相关知识
NPM安装模块报错:Error: sha1
java 宠物店管理系统
Java+Vue+ElementUI宠物服务平台(附开题报告)
【网站项目】基于springboot的宠物医院预约管理系统
springboot宠物服务系统
网址: JavaSE https://www.mcbbbk.com/newsview470509.html
上一篇: 179 |
下一篇: 养鱼风水学:招财猫+鱼=招财猫鱼 |
推荐分享

- 1养玉米蛇的危害 28694
- 2狗交配为什么会锁住?从狗狗生 7180
- 3我的狗老公李淑敏33——如何 6236
- 4豆柴犬为什么不建议养?可爱的 4637
- 5南京宠物粮食薄荷饼宠物食品包 4563
- 6中国境内禁养的十大鸟种,你知 4429
- 7湖南隆飞尔动物药业有限公司宠 4259
- 8自制狗狗辅食:棉花面纱犬的美 4257
- 9家养水獭多少钱一只正常 4212
- 10广州哪里卖宠物猫狗的选择性多 4122