多态 java_什么是java多态?java多态的使用

本文通过游戏场景解释了Java多态的概念,展示了如何使用多态优化代码设计。多态允许使用父类引用操作子类对象,实现更灵活的代码扩展。文章详细介绍了实现多态的步骤,并给出了具体的代码示例,包括使用父类作为参数和返回值来实现多态。同时,文章还讨论了类型转换以及`instanceof`运算符在多态中的作用。

本篇文章给大家带来的内容是什么是java多态

?java多态的使用,通过游戏中的一些功能带你掌握多态的使用。下面由动力节点java学院小编为大家一一介绍什么是java多态及java多态的使用。希望对大家有帮助。

为什么要使用多态

在一款对战类游戏中(如有雷同纯属巧合),有两个不同的法师英雄:小乔、妲己。

两个法师英雄的都有攻击的方法,小乔的攻击伤害为10,消耗魔法20。妲己的攻击伤害为15,消耗魔法30。玩家可以操作两个英雄进行攻击,下面看看实现的代码。

父类-英雄:whyusepolymorphic.Hero.java

9cae221dcfaf57d0dd90337801cca945.png

子类-小乔:whyusepolymorphic.LittleJoe.java

b877aacf29d1723c73a2bfe8288a56d1.png

子类-妲己:whyusepolymorphic.Daji.java

33a6426838583957e93eb41ac28970b6.png

玩家:whyusepolymorphic.Player.java

361a6136fc2dd9c18932b6fbc89f1ea2.png

上面代码完整的实现了要求中的功能,那我们知道英雄不可能就这几个,后期如果添加新的魔法英雄,伤害不一样,怎么办?

我们可以添加新的类,实现攻击的方法,修改玩家类添加操作英雄的方法。这个方式可以完成 Hero 扩展的需求,但是后面有更多的 Hero

添加进来,我们维护起来就不是那么方便了。

研究上面的代码我们发现,Player 类中的 play 方法的参数都是 Hero 类的子类,能否使用一个 play(Hero hero)

方法操作所有的英雄?使用多态就能够实现这种优化设计。

什么是多态

简明扼要,多态就是多种形态。在自然界中碳的多态就有石墨、钻石等,剪这个动作就有剪纸、剪头发等。同一个操作,由于条件的不同,产生的结果也不同。

那么在程序中的多态,就是指同一个引用类型,使用不同的实例而执行不同的操作(父类引用指定子类对象 Hero h=new Daji();)。

如何实现多态

实现多态的步骤:

1.编写具有继承关系的父类和子类

2.子类重写父类方法

3.使用父类的引用指向子类的对象

父类作为方法形参实现多态

使用多态优化上面代码

修改 Hero.java 添加攻击的方法

0bc19169b4aea282781f7a5b5df27af5.png

两个子类不用修改

修改玩家类 Player.java 将 play方法的参数设为父类

f63ed949e546f0aec7843534e50dc5bf.png

修改测试类

2cce9e686c96e87904d06c4634386ceb.png

父类作为返回值实现多态

玩家购买英雄使用多态实现,购买的方法有返回值,返回购买后的英雄,父类作为返回值实现这个功能。

修改玩家类 Player.java 添加获取英雄的方法

1d24666e10c0c850325ba83bb55e6bdc.png

测试类

437c42b4345c1b614b51910d0ed16b72.png

父类到子类的转换

如果子类中有一些子类特有的方法,父类引用不能调用子类的特有的方法。

向 Daji.java 中添加一个方法 queenWorship

64239c10ceea6b3367aee30a2e6a83ba.png

向 LittleJoe.java 中添加一个方法 dazzlingStar

7d6ab287c11e7626faf902918e48b01d.png

在 Player.java 中添加 bigMove 方法

23edcd5e850fa9e93ca9f7361cebbddc.png

发现代码 hero.dazzlingStar(); 报错

那么这个时候就需要将父类转换为子类(强制类型转换)

c7f5345fd757e519bf16eb29d36cb38e.png

但是直接这样写也会报错,用 instanceof 运算符可以保证不会转换错误

语法:

1c1b8f70026cdd366ff0986cf90cbea7.png

instanceof通常和强制类型转换结合使用

修改 Player.java 中的 bigMove 方法

5a60a235eb23c9458b0823a22d51e7d0.png

在 main 方法中编写测试代码

c251f6ca902ab468e6c76492393d8d2c.png

以上就是什么是java多态?java多态的使用的详细内容,希望能对大家的学习有所帮助。更多相关内容请关注动力节点java学院官网,每天会有精彩内容等你来看。

以上内容相关免费视频教程下载:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值