【发布时间】:2014-05-20 15:18:45
【问题描述】:
我正在用 C# 制作控制台游戏,但遇到了 OOP 范例的问题。
我有一个 Item 类:
class Item
{
public int SellPrice;
public string Name;
}
还有一个 ShopItem 类,代表可以在商店购买的 Item 对象:
class ShopItem : Item
{
public int Price;
}
最后是武器类:
class Weapon
{
public int Attack, Durability;
}
现在,每个 Weapon 对象都是一个 Item(这里的继承被有意删除),但这会产生一个大问题。
虽然您可以在商店购买一些武器,但您只能通过完成任务来获得其他武器。
因此,武器有时是 ShopItem(因为它可以在商店中购买),有时它只是物品(不能在商店中购买)。
如果物品是 ShopItem,有时可以在商店中购买(因为 ShopItem 继承自 Item)。
那么我可以在这里做什么?我显然不能从两者继承,如果我从 Item 类继承,我就不能在商店中出售 Weapon 对象(因为我无法将它转换成 ShopItem)。
您认为这种情况的最佳解决方案是什么?
【问题讨论】:
-
要查看的内容:接口 - 特别是例如这个问题:stackoverflow.com/questions/56867/interface-vs-base-class - 将宠物与动物视为您的 ShopItem 与 Item。此外,可能是组合而不是继承,尽管我觉得它不适用于这种情况。
标签: c# .net oop inheritance paradigms