2018-03-19

在设计LOL的时候,进攻类英雄有两种,一种是进行物理系攻击,一种是进行魔法系攻击。这时候,就可以使用接口来实现这个效果。 
接口就像是一种约定,我们约定某些英雄是物理系英雄,那么他们就一定能够进行物理。

一、物理攻击接口

创建一个接口 File->New->Interface 
AD ,声明一个方法 physicAttack 物理攻击,但是没有方法体,是一个“空”方法

package charactor;public interface AD {//物理伤害public void physicAttack();
}

二、设计一类英雄,能够使用物理攻击

设计一类英雄,能够使用物理攻击,这类英雄在LOL中被叫做AD
类:ADHero
继承了Hero 类,所以继承了name,hp,armor等属性
实现某个接口,就相当于承诺了某种约定
所以,实现了AD这个接口,就必须提供AD接口中声明的方法physicAttack()
实现在语法上使用关键字 implements

package charactor;public class ADHero extends Hero implements AD{@Overridepublic void physicAttack() {System.out.println("进行物理攻击");}}

三、魔法攻击接口

创建一个接口 File->New->Interface 
AP ,声明一个方法 magicAttack 魔法攻击,但是没有方法体,是一个“空”方法

package charactor;public interface AP {public void magicAttack();
}

四、设计一类英雄,只能使用魔法攻击

设计一类英雄,只能使用魔法攻击,这类英雄在LOL中被叫做AP 
类:APHero 
继承了Hero 类,所以继承了name,hp,armor等属性 
同时,实现了AP这个接口,就必须提供AP接口中声明的方法magicAttack() 
实现在语法上使用关键字 implements

package charactor;public class APHero extends Hero implements AP{@Overridepublic void magicAttack() {System.out.println("进行魔法攻击");}}

五、设计一类英雄,既能进行物理攻击,又能进行魔法攻击

一种英雄,能够同时进行物理攻击和魔法攻击,比如伊泽瑞尔,皮城女警凯特琳

package charactor;//同时能进行物理和魔法伤害的英雄
public class ADAPHero extends Hero implements AD,AP{@Overridepublic void magicAttack() {System.out.println("进行魔法攻击");}@Overridepublic void physicAttack() {System.out.println("进行物理攻击");}}

六、什么样的情况下该使用接口?

如上的例子,似乎要接口,不要接口,都一样的,那么接口的意义是什么呢
学习一个知识点,是由浅入深得进行的。 这里呢,只是引入了接口的概念,要真正理解接口的好处,需要更多的实践,

以及在较为复杂的系统中进行大量运用之后,才能够真正理解,比如在学习了多态之后就能进一步加深理解。
刚刚接触一个概念,就希望达到炉火纯青的学习效果,这样的学习目标是不科学的。

转载于:https://www.cnblogs.com/Parker-YuPeng/p/8598895.html

JAVA 基础 / 第二十八课:接口与继承 / 如何设计JAVA的接口?相关推荐

  1. JAVA 基础 / 第二十九课:接口与继承 / JAVA中的对象转型

    2018-03-19 一.明确引用类型与对象类型的概念 引用类型与对象类型的概念 在这个例子里,有一个对象 new ADHero(), 同时也有一个引用ad 对象是有类型的, 是ADHero 引用也是 ...

  2. JAVA 基础 / 第二十九课:接口与继承 / JAVA 重写方法和多态

    2018-03-19 子类可以继承父类的对象方法.在继承后,重复提供该方法,就叫做方法的重写:又叫覆盖 override 1.父类Item 父类Item有一个方法,叫做effect package p ...

  3. 重学java基础第二十五课:数据类型

  4. 重学java基础第二十四课:标识符合关键字

  5. 重学java基础第二十二课:IDEA安装

  6. 重学java基础第十八课:卸载jdk和安装jdk

  7. NeHe OpenGL第二十八课:贝塞尔曲面

    NeHe OpenGL第二十八课:贝塞尔曲面 贝塞尔曲面: 这是一课关于数学运算的,没有别的内容了.来,有信心就看看它吧. 贝塞尔曲面 作者: David Nikdel ( ogapo@ithink. ...

  8. Java调用大数据接口,学习Hadoop第二十八课(java通过调用接口来操作HBase)

    上节课我们一起简单学习了HBase的一些理论,这节课我们一起学习用java调HBase的接口来操作HBase. 我们首先建一个工程,这里我们还用原始的新建一个lib包.然后我们把下载的hbase-0. ...

  9. HLS第二十八课(UG871,接口综合)

    接口的返回值,入口参数,都是需要用pragma约束的. 首先来回顾一下接口. a clock and reset have been added to the design: ap_clk and a ...

最新文章

  1. Windows下的Memcache安装
  2. java频繁的new对象 优化方案
  3. docker启动nginx,并挂载目录及docker容器中文乱码
  4. 设置 Linux 的 LD_LIBRARY_PATH 变量
  5. 解决 maps to localhost, but this does not map back to the address
  6. python包的管理(添加的3种方式 删除包)
  7. 容器使用的12条军规——《Effective+STL中文版》试读
  8. mac:文件编码问题
  9. logrotate测试_日志管理工具logrotate
  10. qt制作2048小游戏
  11. openGL之API学习(一二七)dFdx、dFdy偏导数
  12. scikit-learn广义线性模型之最小二乘法
  13. Linux~linux无法解析域名
  14. LeetCode 2203. 得到要求路径的最小带权子图(dijkstra算法)
  15. NPOI导出EXCEL 打印设置分页及打印标题
  16. vdbench运行报错:java.net.NoRouteToHostException: No route to host (Host unreachable)
  17. 工程训练大赛物流小车_宁大机械学子在工程训练省赛中斩获佳绩,取得历史性突破...
  18. opencv3/C++ 将图片转换为视频
  19. dapper mysql通用类_Dapper ORM 用法
  20. 哈勃望远镜29周年礼物:美轮美奂的南方蟹状星云。

热门文章

  1. 百无聊赖之JavaEE从入门到放弃(十二)数组
  2. Oracle BBED 工具 说明
  3. php人群定向搜索,搜索人群定向功能
  4. 河北秦皇岛市委网信办开展“抵制网络谣言 净化网络空间”主题宣传活动
  5. 苹果ceo乔布斯_苹果流年不利,再遭遇集体诉讼,库克为小利却造成惨重损失
  6. 心理咨询师考试科目有哪些 题型是什么
  7. 魔兽世界9.0格拉萨恩的宝箱怎么得 格拉萨恩的宝箱获取方法
  8. PPTV多屏互动功能再升级 实现PC移动端双向互动
  9. 光盘刻录系列之一毫无头绪
  10. 06-ES6语法:展开运算符