为了更好地理解和掌握抽象类与接口的概念,做了一个以简单游戏人物设计来加深理解的案例。

1、首先分析游戏人物的类型假如分为战士、法师和射手类英雄他们三种同属于英雄有姓名,购买价格,英雄生命值属性,都有行走、释放技能的行为而每种英雄的技能有可能不一样所以将技能的方法设置为抽象方法。

package com.miaoxiake.day03;
/*** 英雄类* @author 喵喵侠客**/
public abstract class Hero {String name;int price;int life;public Hero() {super();// TODO Auto-generated constructor stub}public Hero(String name, int price, int life) {super();this.name = name;this.price = price;this.life = life;}public abstract void skill();public void run() {System.out.println("走路。。。");}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}public int getLife() {return life;}public void setLife(int life) {this.life = life;}}

2、定义一个可以让英雄瞬间移动的接口,如果某类英雄想拥有瞬间移动的技能直接实现接口即可。

package com.miaoxiake.day03;
/*** 瞬间移动,闪现功能* @author 喵喵侠客**/
public interface FlashesAbility {void setAction();
}

3.创建战士、法师、射手类继承英雄抽象类

package com.miaoxiake.day03;
/*** 战士类* @author 喵喵侠客**/
public class Warrior extends Hero {public Warrior() {super();// TODO Auto-generated constructor stub}public Warrior(String name, int price, int life) {super(name, price, life);// TODO Auto-generated constructor stub}@Overridepublic void skill() {// TODO Auto-generated method stubSystem.out.println("物理伤害");}}
package com.miaoxiake.day03;
/*** 法师类* @author 喵喵侠客**/
public class Master extends Hero {public Master() {super();// TODO Auto-generated constructor stub}public Master(String name, int price, int life) {super(name, price, life);// TODO Auto-generated constructor stub}@Overridepublic void skill() {// TODO Auto-generated method stubSystem.out.println("法术攻击");}}

让射手类实现瞬间移动接口,使射手拥有此功能

package com.miaoxiake.day03;
/*** 射手类* @author 喵喵侠客**/
public class Shooter extends Hero implements FlashesAbility{public Shooter() {super();// TODO Auto-generated constructor stub}public Shooter(String name, int price, int life) {super(name, price, life);// TODO Auto-generated constructor stub}@Overridepublic void skill() {// TODO Auto-generated method stubSystem.out.println("远程射击");}@Overridepublic void setAction() {// TODO Auto-generated method stubSystem.out.println("可以瞬间移动");}}

4、创建测试类

package com.miaoxiake.test;import com.miaoxiake.day03.Hero;
import com.miaoxiake.day03.Master;
import com.miaoxiake.day03.Shooter;
import com.miaoxiake.day03.Warrior;public class HeroTest {public static void main(String[] args) {Hero h1=new Warrior("亚瑟",888,1000);//定义一个战士类对象Hero h2=new Shooter("马可波罗",666,600);//定义一个射手类对象Hero h3=new Master("王昭君",888,500);//定义一个法师类对象System.out.println("英雄名称:"+h1.getName()+";  购买价格:"+h1.getPrice()+"金币;   生命值:"+h1.getLife());System.out.print("基本技能:");h1.run();System.out.print("技能:");h1.skill();System.out.println("*********************");System.out.println("英雄名称:"+h2.getName()+";  购买价格:"+h2.getPrice()+"金币;   生命值:"+h2.getLife());System.out.print("基本技能:");h1.run();System.out.print("技能:");h2.skill();System.out.print("增加功能:");((Shooter) h2).setAction();System.out.println("*********************");System.out.println("英雄名称:"+h3.getName()+";  购买价格:"+h3.getPrice()+"金币;   生命值:"+h3.getLife());System.out.print("基本技能:");h1.run();System.out.print("技能:");h3.skill();}
}

最后运行查看效果

好了,到此结束。希望对大家能有所帮助

Java理解抽象类与接口游戏人物简单案例相关推荐

  1. 关于Java中抽象类和接口的一点思索

    Java中抽象类和接口的一点思索 成员方法上的区别: 1. java中的抽象类可以提供成员方法的实现细节,抽象方法只能是被public和protected来修饰 配合abstract关键字,子类需要实 ...

  2. Java基础学习第十二讲:Java面向对象---抽象类和接口

    Java面向对象-抽象类和接口 一.抽象类 抽象的定义: 我们在日常生活中,经常通过总结一些事物的共性来对事物进行分类,这种共性可能是一些相同的属性,也可能是一些相同的动作.通过总结,我们能够清晰的划 ...

  3. Java中抽象类和接口在概念、语法和应用上的区别和关系

    2019独角兽企业重金招聘Python工程师标准>>> 春招开始了,盆友们都忙着准备笔试.准备面试,复习学过的知识点,当然我也不例外,在这里祝每一个"有心人"心想 ...

  4. Java学习(90)Java集合排序——Comparator接口介绍、案例:对宠物猫分别按名字升序、年龄降序进行排列

    Java集合排序--Comparator接口介绍.案例:对宠物猫分别按名字升序.年龄降序进行排列 Comparator接口介绍 1. Comparator接口: 2. Comparator接口中的co ...

  5. java第二个案例:运动员和教练(巩固理解抽象类和接口、继承等知识点)

    一.题目 我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练,为了出国交流,跟乒乓球相关的人员都要学习英语,用代码实现.思考有哪些具体类.哪些抽象类.哪些接口. 二.思路 从具体到抽象分析,先从 ...

  6. 详细解析Java中抽象类和接口的区别(很容易理解错)

    2007-09-28 12:17作者:doublel出处:论坛整理责任编辑:方舟 在Java语言中, abstract class 和interface是支持抽象类定义的两种机制.正是由于这两种机制的 ...

  7. java中抽象接口_一篇文章让你彻底理解java中抽象类和接口

    相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文 ...

  8. 一篇文章让你彻底理解java中抽象类和接口

    相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文 ...

  9. Java每日一课:理解抽象类和接口的区别与联系

    抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文章各位都能从容地明了二 ...

最新文章

  1. import configparser config.read(config_path) 报错 UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x
  2. 第六周项目四-静态成员应用
  3. 有一种道理叫“实践”
  4. Python 技术篇-百度语音合成SDK接口调用演示
  5. JS 实现图片的预加载(转载)
  6. P4688-[Ynoi2016]掉进兔子洞【莫队,bitset】
  7. jzoj6804-NOIP2020.9.26模拟jerry【dp】
  8. [css] 对比下px、em、rem有什么不同?
  9. day3-python学习笔记(三)字典、元组
  10. 监督学习 | 决策树之网络搜索
  11. influxdb数据过期_为什么腾讯QQ的大数据平台选择了InfluxDB数据库?
  12. Eureka-zookeeper的服务发现替代方案
  13. 微信小程序在地图上标点 markers 画圈显示范围 circles
  14. GBASE 8s UDR内存管理_02_mi_dalloc
  15. 男士黑色手表的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. 什么是集体户口,优势、劣势
  17. 有效年利率和年化百分比利率
  18. sel2000服务器自动关闭,管家婆辉煌:轻松处理SQL 2000数据库自动停止
  19. patformio安装esp32环境的另一种方法
  20. 认识计算机硬件.ppt,认识计算机硬件资料课件.ppt

热门文章

  1. 使用Maven tomcat:run命令启动web项目时修改默认端口的方法
  2. 【内附PDF资料】Python实现下载图片并生产PDF文件
  3. Lenovo G480笔记本安装OS X Mavericks 10.9,升级10.9.1,驱动安装,DSDT修改全过程
  4. 雷军宣布小米IoT全面升级:WiFi模组降到9.9 接入宜家灯泡 推门锁新品
  5. java代替switch的办法?
  6. 保险经纪公司管理规定
  7. 国防科技大学计算机学院天河楼,科技创新耀天河——记国防科技大学计算机学院计算机研究所所长肖立权...
  8. c语言结构体和联合体,C语言结构体和联合体
  9. openCV--cvCvtColor函数
  10. cvCvtColor()的转换