首页 课程 师资 教程 报名

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

  • 2019-08-19 15:58:56
  • 7354次 动力节点

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

  为什么要使用多态

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

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

  父类-英雄:whyusepolymorphic.Hero.java

 1566200757987807.png

  子类-小乔:whyusepolymorphic.LittleJoe.java

1566200769666113.png

  子类-妲己:whyusepolymorphic.Daji.java

1566200776764468.png

  玩家:whyusepolymorphic.Player.java

1566200782628000.png

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

  我们可以添加新的类,实现攻击的方法,修改玩家类添加操作英雄的方法。这个方式可以完成 Hero 扩展的需求,但是后面有更多的 Hero 添加进来,我们维护起来就不是那么方便了。

  研究上面的代码我们发现,Player 类中的 play 方法的参数都是 Hero 类的子类,能否使用一个 play(Hero hero) 方法操作所有的英雄?使用多态就能够实现这种优化设计。

  什么是多态

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

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

  如何实现多态

  实现多态的步骤:

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

  2.子类重写父类方法

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

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

  使用多态优化上面代码

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

1566200792721717.png

  两个子类不用修改

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

1566200800904370.png

  修改测试类

1566200806558260.png

  父类作为返回值实现多态

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

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

1566200826852859.png

  测试类

 

1566200835991474.png

  父类到子类的转换

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

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

1566200865865243.png

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

1566200884141863.png

  在 Player.java 中添加 bigMove 方法

 1566200894459429.png

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

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

1566200928796544.png

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

  语法:

1566200941542820.png

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

  修改 Player.java 中的 bigMove 方法

1566200955251959.png

  在 main 方法中编写测试代码

  1566200971328490.png

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

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

http://www.bjpowernode.com/xiazai/749.html

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交