所以我試圖教自己編程,我正在做一個實踐的RPG戰鬥的東西。 (基本上只是一個非常簡單的舊的RPG戰鬥系統)但是,我對繼承有點困惑。所以我有一個基類的敵人:繼承和基礎構造函數
class Enemy
{
public string name;
public int health;
public int attack;
public int level;
public Enemy(string _name, int _health, int _attack, int _level)
{
name = _name;
health = _health;
attack = _attack;
level = _level;
}
}
然後,我有這個類Dragon
:
class Dragon : Enemy
{
}
爲什麼說
沒有給定參數對應於需要正式的 'Enemy.Enemy(string,int,int,int)的參數'_name'?
我的想法是,它會使用敵人的構造函數,我必須讓每個派生類自己的構造函數?
是你必須在派生自'Enemy'的類中創建一個構造函數,因爲構造函數不是繼承的,這些構造函數將不得不調用你的'Enemy'構造函數。 – juharr
如果'Enemy'具有無參數的構造函數,那麼在構造子類時會自動調用它,但它沒有。如果(且只有)'Enemy'沒有定義任何構造函數,編譯器會自動爲它提供一個無參數的構造函數。這是有道理的:你可以免費釋放整個構造器的東西,但如果你涉足它,編譯器會給你完全的控制權。 –