JAVA 基础 / 第二十八课:接口与继承 / 如何设计JAVA的接口?
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的接口?相关推荐
- JAVA 基础 / 第二十九课:接口与继承 / JAVA中的对象转型
2018-03-19 一.明确引用类型与对象类型的概念 引用类型与对象类型的概念 在这个例子里,有一个对象 new ADHero(), 同时也有一个引用ad 对象是有类型的, 是ADHero 引用也是 ...
- JAVA 基础 / 第二十九课:接口与继承 / JAVA 重写方法和多态
2018-03-19 子类可以继承父类的对象方法.在继承后,重复提供该方法,就叫做方法的重写:又叫覆盖 override 1.父类Item 父类Item有一个方法,叫做effect package p ...
- 重学java基础第二十五课:数据类型
- 重学java基础第二十四课:标识符合关键字
- 重学java基础第二十二课:IDEA安装
- 重学java基础第十八课:卸载jdk和安装jdk
- NeHe OpenGL第二十八课:贝塞尔曲面
NeHe OpenGL第二十八课:贝塞尔曲面 贝塞尔曲面: 这是一课关于数学运算的,没有别的内容了.来,有信心就看看它吧. 贝塞尔曲面 作者: David Nikdel ( ogapo@ithink. ...
- Java调用大数据接口,学习Hadoop第二十八课(java通过调用接口来操作HBase)
上节课我们一起简单学习了HBase的一些理论,这节课我们一起学习用java调HBase的接口来操作HBase. 我们首先建一个工程,这里我们还用原始的新建一个lib包.然后我们把下载的hbase-0. ...
- HLS第二十八课(UG871,接口综合)
接口的返回值,入口参数,都是需要用pragma约束的. 首先来回顾一下接口. a clock and reset have been added to the design: ap_clk and a ...
最新文章
- Windows下的Memcache安装
- java频繁的new对象 优化方案
- docker启动nginx,并挂载目录及docker容器中文乱码
- 设置 Linux 的 LD_LIBRARY_PATH 变量
- 解决 maps to localhost, but this does not map back to the address
- python包的管理(添加的3种方式 删除包)
- 容器使用的12条军规——《Effective+STL中文版》试读
- mac:文件编码问题
- logrotate测试_日志管理工具logrotate
- qt制作2048小游戏
- openGL之API学习(一二七)dFdx、dFdy偏导数
- scikit-learn广义线性模型之最小二乘法
- Linux~linux无法解析域名
- LeetCode 2203. 得到要求路径的最小带权子图(dijkstra算法)
- NPOI导出EXCEL 打印设置分页及打印标题
- vdbench运行报错:java.net.NoRouteToHostException: No route to host (Host unreachable)
- 工程训练大赛物流小车_宁大机械学子在工程训练省赛中斩获佳绩,取得历史性突破...
- opencv3/C++ 将图片转换为视频
- dapper mysql通用类_Dapper ORM 用法
- 哈勃望远镜29周年礼物:美轮美奂的南方蟹状星云。