[英]C# Inheritence HW Assignment; Single Class for multiple parents?
这是一个硬件任务,所以应该不是很困难。 在任何情况下,我们都应该创建一个 Weapon 的基类,然后是 MeleeWeapon 、Spell、Projectile 的子类,每个类都有额外的武器属性。 那部分不是那么难。 我遇到了以下问题:
“创建一个代表具有名称和武器的玩家的类”
我可以管理创建一个玩家类,但我不知道如何解释武器。
我是否有三个不同的玩家类,例如公共类 Player : Spell: Weapon 或公共类 Player: MeleeWeapon : Weapon? 我觉得应该有一种方法可以让一个玩家类,但我对如何做到这一点感到心慌。 播放器类还需要一个构造函数; 同样,这并不太难,但我不知道如何考虑武器类型的选择,除非我有不止一个玩家职业。
基本上,我似乎想要一个大子类(玩家)-> 三个可能的子类(近战武器、法术、投射物)-> 一个父类(武器),但我在这里很困惑。
你完全误解了要求。 细看:
创建一个代表具有名称和武器的玩家的类
不是说玩家是名字和武器,而是说玩家有名字和武器。
Player
类应该有两个属性: Name
和Weapon
。 这与继承无关。
你很困惑。 退后一步并按照说明进行操作:
创建一个代表玩家的类...
public class Player {}
...有一个名字...
public class Player
{
public string Name { get; set; }
}
……还有武器。
public class Player
{
public string Name { get; set; }
public Weapon EquippedWeapon { get; set; }
}
您现在可以使用不同的武器创建不同的玩家:
var alice = new Player { Name = "Alice", EquippedWeapon = new MeleeWeapon() };
var bob = new Player { Name = "Bob", EquippedWeapon = new Spell() };
作业要求您在玩家和武器之间使用has-a关系,而不是is-a
因此,在您的 Player 类中,您将拥有
class Player
{
public string Name {get; protected set;}
public Weapon CurrentWeapon {get; protected set;}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.