2 回答
TA贡献1946条经验 获得超4个赞
这就解决了。
public void triggerItem(Item item)
{
if (item is Weapon) {
equipWeapon((Weapon)item);
}
}
public void equipWeapon(Weapon weapon)
{
}
你在这里做什么是向下转换的Item以Weapon同时传递到equipWeapon(Weapon weapon)。
TA贡献1815条经验 获得超10个赞
给你的基类一个方法,让它被装备,并在知道如何装备自己的特定于类型的类中实现它。
例子:
abstract class Item
{
public abstract void Equip();
}
class Weapon
{
public override void Equip()
{
equipWeapon(this);
}
}
然后 triggerItem 变得微不足道:
public void triggerItem(Item item)
{
item.Equip();
}
如果你需要在不同的类(例如任何包含的类triggerItem)上调用装备武器,你可以使类成为接口的一部分:
abstract class Item
{
public abstract void Equip(Game context);
}
class Weapon
{
public override void Equip(Game context)
{
context.equipWeapon(this);
}
}
class Game
{
public void triggerItem(Item item)
{
item.Equip(this);
}
}
- 2 回答
- 0 关注
- 163 浏览
添加回答
举报