[英]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.