簡體   English   中英

基類繼承自另一個基類?

[英]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基類以從另一個基類繼承?

編輯:打開類文件時,錯誤來自VS: 在此處輸入圖片說明

為什么要嘗試在表單設計器中打開我的類文件? 我不明白!

我相信這是正確的,只要基類未標記為已密封並且具有適當的構造函數即可。 創建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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM