案例情景:某公司要開發新游戲,請用面向對象的思想設計英雄類、怪物類和武器類。
編寫測試類,創建英雄對象、怪物對象和武器對象,並輸出各自的信息。
其中設定分別如下:
1.英雄類
屬性:英雄名字、生命值。
方法:輸出基本信息。
2、怪物類
屬性:怪物名字、生命值、類型。
方法:輸出基本信息。
3.武器類
屬性:武器名字、攻擊力。
方法:輸出基本信息。
一、創建實體類
1.我們已經學過抽象類和繼承,所有我們可以從高一層的角度來設計實體類(首先根據各種角色所具有的共同的特征抽象出一個抽象類)
抽象的角色類:
1 /** 2 * 游戲角色:抽象類 3 * 4 * @author Administrator 5 * 6 */ 7 public abstract class Role { 8 private String role;// 角色名稱 9 private String name;// 角色姓名 10 // 封裝屬性 11 12 public String getRole() { 13 return role; 14 } 15 16 public void setRole(String role) { 17 this.role = role; 18 } 19 20 public String getName() { 21 return name; 22 } 23 24 public void setName(String name) { 25 this.name = name; 26 } 27 28 // 介紹方法 29 public abstract void showInfo(); 30 }
2.繼承抽象類,創建三個具體的角色類
(1)英雄類
1 /** 2 * 英雄類 3 * 4 * @author Administrator 5 * 6 */ 7 public class Hero extends Role { 8 private int health;// 健康值 9 10 public Hero() { 11 super(); 12 this.setRole("英雄"); 13 this.setName("李小俠"); 14 this.setHealth(300); 15 } 16 17 @Override 18 public void showInfo() { 19 System.out.println("我是" + this.getRole() + ",我的基本信息如下:\n姓名:" + this.getName() + ",生命值:" + this.getHealth()); 20 } 21 22 public int getHealth() { 23 return health; 24 } 25 26 public void setHealth(int health) { 27 this.health = health; 28 } 29 30 }
(2)武器類
/** * 武器類 * * @author Administrator * */ public class Weapons extends Role { private int attack;// 攻擊力 public Weapons() { super(); this.setRole("武器"); this.setName("死亡鐮刀"); this.setAttack(12); } @Override public void showInfo() { System.out.println("我是" + this.getRole() + ",我的基本信息如下:\n武器名:" + this.getName() + ",攻擊力:" + this.getAttack()); } public int getAttack() { return attack; } public void setAttack(int attack) { this.attack = attack; } }
(3)怪物類
/** * 怪物類 * * @author Administrator * */ public class Monster extends Role { private int health;// 健康值 private String type;// 類型 public Monster() { super(); this.setRole("怪物"); this.setName("小龜"); this.setHealth(300); this.setType("潛水類"); } public int getHealth() { return health; } public void setHealth(int health) { this.health = health; } public String getType() { return type; } public void setType(String type) { this.type = type; } @Override public void showInfo() { System.out.println("我是" + this.getRole() + ",我的基本信息如下:\n姓名:" + this.getName() + ",生命值:" + this.getHealth() + ",類型:" + this.getType()); } }
二、創建測試類(主類:角色介紹)
方法的調用:在主方法創建角色實例,用實力對象調用方法
/** * 游戲角色介紹測試類 * * @author Administrator * */ public class Main { public static void main(String[] args) { // 創建角色實例 Hero hero = new Hero(); Weapons weap = new Weapons(); Monster monster = new Monster(); // 角色介紹 hero.showInfo(); weap.showInfo(); monster.showInfo(); } }
三、測試修改Bug最終展示
效果如下圖: