day11-引用数据类型使用的案例2

This commit is contained in:
2026-01-26 10:55:53 +08:00
parent ad3e59f9ab
commit 32be66d807
3 changed files with 62 additions and 0 deletions

View File

@@ -4,4 +4,42 @@ package com.inmind.reference05;
案例:英雄角色,获取武器,获取防御装,闯关,施放技能 案例:英雄角色,获取武器,获取防御装,闯关,施放技能
*/ */
public class Demo07 { public class Demo07 {
public static void main(String[] args) {
//开始游戏
//选择一个英雄
Hero hero = new Hero();
hero.setName("德玛西亚");
//打怪,掉落一把屠龙刀
Weapon weapon = new Weapon("屠龙刀", 999);
hero.setWeapon(weapon);
//打怪,掉落了一个反甲防具
Armor armor = new Armor("反甲", 888);
hero.setArmor(armor);
//打boss
hero.attack();
hero.protect();
//掉落了一项技能(匿名内部类实现)
/*
简化写法:
hero.setSkill(new Skill() {
@Override
public void outSkill() {
System.out.println("野火燎原");
}
});*/
Skill skill = new Skill() {
@Override
public void outSkill() {
System.out.println("野火燎原");
}
};
//英雄获取了技能
hero.setSkill(skill);
//英雄可以释放技能
hero.outSkill();
}
} }

View File

@@ -8,6 +8,8 @@ public class Hero {
private Weapon weapon;//武器属性 自定义引用数据类型作为了成员变量 private Weapon weapon;//武器属性 自定义引用数据类型作为了成员变量
private Armor armor;//防具属性 private Armor armor;//防具属性
private Skill skill;//技能属性,接口作为了属性
private ArrayList<Weapon> weapons = new ArrayList<>();//武器的背包 private ArrayList<Weapon> weapons = new ArrayList<>();//武器的背包
// private ArrayList<Armor> armors;//武器的背包 // private ArrayList<Armor> armors;//武器的背包
@@ -27,6 +29,23 @@ public class Hero {
System.out.println(this.name+"使用了"+this.armor.getName()+"防具,防御了"+this.armor.getProtectNum()+"伤害"); System.out.println(this.name+"使用了"+this.armor.getName()+"防具,防御了"+this.armor.getProtectNum()+"伤害");
}; };
//施放技能
public void outSkill(){
if (this.skill != null) {
System.out.println("英雄施放了技能:");
this.skill.outSkill();
} else {
System.out.println("您暂未获取技能");
}
}
public Skill getSkill() {
return skill;
}
public void setSkill(Skill skill) {
this.skill = skill;
}
public String getName() { public String getName() {
return name; return name;

View File

@@ -0,0 +1,5 @@
package com.inmind.reference05;
//定义 了一个技能接口,它的作用技能能施放
public interface Skill {
void outSkill();
}