设计Java的接口

在设计LOL的时候,进攻类英雄有两种,一种是进行物理系攻击,一种是进行魔法系攻击

这时候,就可以使用接口来实现这个效果。

接口就像是一种约定,我们约定某些英雄是物理系英雄,那么他们就一定能够进行物理攻击。

步骤 1 : 物理攻击接口

创建一个接口 File->New->Interface

AD ,声明一个方法 physicAttack 物理攻击,但是没有方法体,是一个“”方法

package charactor;

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

步骤 2 : 设计一类英雄,能够使用物理攻击

设计一类英雄,能够使用物理攻击,这类英雄在LOL中被叫做AD

类:ADHero

继承了Hero 类,所以继承了name,hp,armor等属性

实现某个接口,就相当于承诺了某种约定

所以,实现了AD这个接口,就必须提供AD接口中声明的方法physicAttack()

实现在语法上使用关键字 implements

package charactor;

public class ADHero extends Hero implements AD{

    @Override
public void physicAttack() {
System.out.println("进行物理攻击");
} }

步骤 3 : 魔法攻击接口

创建一个接口 File->New->Interface

AP ,声明一个方法 magicAttack 魔法攻击,但是没有方法体,是一个“空”方法

package charactor;

public interface AP {

    public void magicAttack();
}

步骤 4 : 设计一类英雄,只能使用魔法攻击

设计一类英雄,只能使用魔法攻击,这类英雄在LOL中被叫做AP

类:APHero

继承了Hero 类,所以继承了name,hp,armor等属性

同时,实现了AP这个接口,就必须提供AP接口中声明的方法magicAttack()

package charactor;

public class APHero extends Hero implements AP{

    @Override
public void magicAttack() {
System.out.println("进行魔法攻击");
} }

步骤 5 : 设计一类英雄,既能进行物理攻击,又能进行魔法攻击

一种英雄,能够同时进行物理攻击和魔法攻击

比如伊泽瑞尔,皮城女警凯特琳

package charactor;

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

练习接口

(设计一个治疗者接口:Healer

该接口声明有方法: heal()

设计一个Support类,代表辅助英雄,继承Hero类,同时实现了Healer这个接口)

答案

public interface Healer {
public void heal(); //加血
}

.

public class Support extends Hero implements Healer{

    @Override
public void heal() {
System.out.println(name+" 加了一口血");
} }

Java自学-接口与继承 接口的更多相关文章

  1. java中接口可以继承接口

    今天阅读别人的代码才发现,接口是可以继承接口的 一个类只能extends一个父类,但可以implements多个接口. 一个接口则可以同时extends多个接口,却不能implements任何接口. ...

  2. Java自学-集合框架 List接口

    ArrayList与List接口 步骤 1 : ArrayList和List ArrayList实现了接口List 常见的写法会把引用声明为接口List类型 注意:是java.util.List,而不 ...

  3. JAVA中为什么要使用接口,继承接口不是还要重写方法吗?为什么不直接写那些方法呢?:::接口的最主要的作用是达到统一访问

    接口的最主要的作用是达到统一访问 那么什么叫统一访问呢 举个例子 你这样想,我做一个USB接口,有个读的抽象方法 那叫read()吧,然后mp3类实现,U盘类实现,移动硬盘类实现,这样我用的时候用US ...

  4. java自学第3期——继承、多态、接口、抽象类、final关键字、权限修饰符、内部类

    一.继承: 关键字extends /* 定义一个父类:人类 定义父类格式:public class 父类名称{ } 定义子类格式:public class 子类名称 extends 父类名称{ } * ...

  5. 【Java面试题】60 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?

    接口可以继承接口.抽象类可以实现(implements)接口,抽象类可以继承具体类.抽象类中可以有静态的main方法. 问:  抽象类是否可继承实体类 (concrete class) 答: 抽象类是 ...

  6. java 接口 继承 接口 抽象类 继承 实体类

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 接口 可以 继承 接口 抽象类 可以 实现 接口 抽象类 继承实体类 需要 实体类 有 ...

  7. java 面向对象编程--第十章 接口

    1.  接口可以看做是抽象类的特例.抽象类中可以定义抽象方法,也可以定义具体方法.但接口只能定义抽象方法.所有接口可以看作行为的抽象.定义接口使用关键字interface,实现接口使用关键字imple ...

  8. Java编程的逻辑 (19) - 接口的本质

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  9. Java程序设计8——抽象类、接口与内部类

    1 抽象类 当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体.但在某些情况下,某个父类并不需要实现,因为它只需要当做一个模板,而具体的实现,可以由 ...

随机推荐

  1. 等了半年的AMD锐龙3000系列台式机处理器今天终于上市开卖了!

    第三代AMD锐龙台式机处理器参数:

  2. pdf的使用遇到的问题

    http://blog.csdn.net/atluckstar/article/details/77688972 回答网友提问  2015-7-28 因为好多人问能不能显示中文的问题,我总结大致分为两 ...

  3. 借助模板类自动实现COM连接点接收器(Sink)

    本文的更新:借助模板类自动实现COM连接点接收器(Sink)更新 (2014-06-09 17:09) 最初的代码源自free2000fly的一个标准的 COM 连接点接收器(Sink)的实现, 使用 ...

  4. Oracle EBS 11i x86-64 的预安装

    1.EBS11i的软件组成,28个zip包 Oracle ApplicationsOracle Application with NLSOracle Database technology stack ...

  5. Layui 在新标签中打开页面 / 模拟点击菜单

    原文:https://blog.csdn.net/sr_www/article/details/81394365 核心代码: //在新标签页中 打开页面 function newTab(url, ti ...

  6. 【LG2567】[SCOI2010]幸运数字

    [LG2567][SCOI2010]幸运数字 题面 洛谷 题目大意: 问你区间\([L,R](1\leq L\leq R\leq 10^{10})\)中有几个数是仅由\(6,8\)组成的数的倍数. 题 ...

  7. Springboot之自定义配置

    SpringBoot自定义配置 springboot在这里就不过多介绍了,大家都应该了解springboot零配置文件,所以配置信息都装配在属性文件(properties.yml.yaml)中,有时我 ...

  8. SpringBoot与MyBatis整合案例

    1.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  9. git: hook 修改提交信息

    git获取数字顺序版本号 因为git的版本使用的是hash值,不能很直观的看出那个版本,所以想找到一种方法,获取顺序的版本号,在网上找到了方法,可以获取顺序版本号 摘自:[使用bash从SVN和Git ...

  10. 【ASP.NET Core分布式项目实战】(六)Gitlab安装

    Gitlab GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能.使用Git作为代码管理工具,并在此基础上搭建起来的web服务 ...