[英]Base class inheriting from another base class?
我正在嘗試為C#中的小型Windows游戲創建一些類。 我有一個帶有構造函數的Weapon類,該構造函數繼承自我的基類Item :
public class Weapon : Item
{
public int Attack { get; set; }
//constructor
public Weapon(int id, string name, int value, int lvl, int attack) :
base(id, name, value, lvl)
{
Attack = attack;
}
}
物品類別:
public class Item
{
public int ID { get; set; }
public string Name { get; set; }
public int Value { get; set; }
public int Lvl { get; set; }
//constructor
public Item(int id, string name, int value, int lvl)
{
ID = id;
Name = name;
Value = value;
Lvl = lvl;
}
}
一切正常,我可以調用構造函數並創建Weapon對象的實例。 但是,我也希望我的Item和Weapon類從PictureBox類繼承,如下所示:
public class Item : PictureBox
{
public int ID { get; set; }
public string Name { get; set; }
public int Value { get; set; }
public int Lvl { get; set; }
//constructor
public Item(int id, string name, int value, int lvl)
{
ID = id;
Name = name;
Value = value;
Lvl = lvl;
}
}
但是,應用上面的代碼將導致錯誤“找不到類型'MyNamespace.Item'的構造函數”
我是否采用正確的方法? 如何獲取我的Item基類以從另一個基類繼承?
為什么要嘗試在表單設計器中打開我的類文件? 我不明白!
我相信這是正確的,只要基類未標記為已密封並且具有適當的構造函數即可。 創建Item類時,構造函數現在將需要調用基本PictureBox構造函數,並使用其公共構造函數之一。
例如:
//constructor
public Item(int id, string name, int value, int lvl)
: base(...params etc)
{
您需要一個無參數的構造函數; 否則,設計器將無法顯示您的控件(因為您是從PictureBox
派生的,它現在是一個控件,因此通過雙擊打開文件將加載設計器)。
根據基於組件的方法,必須能夠通過默認構造函數創建組件並設置公共屬性(可以在屬性網格中設置)來恢復組件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.