私はプログラムのために自分自身を教えようとしており、私は実践のためにRPGの戦いをしています。 (基本的にはC#の非常にシンプルな古い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'パラメータですか?
敵のコンストラクタを使用すると思っていましたが、各派生クラスを独自のコンストラクタにする必要がありますか?
あなたを:
あなたも、「あなたのコンストラクタにあなたのようなベース・コンストラクタに転送する必要はありませんdragon'クラスをいくつか追加のパラメータを追加することができますコンストラクタが継承されていないため 'Enemy'から派生したクラスでコンストラクタを作成しなければならず、それらのコンストラクタは' Enemy'コンストラクタを呼び出さなければなりません。 – juharr
'Enemy'にパラメータのないコンストラクタがあると、それはサブクラスが構築されたときに自動的に呼び出されますが、それは持っていません。 'Enemy'がコンストラクタを定義していない場合にのみ、コンパイラはパラメータなしのコンストラクタを自動的に提供します。これは理にかなっています:あなたはコンストラクタのものを無料で吹き飛ばすことができますが、もしあなたがそれに関与するならば、コンパイラはあなたに完全な制御を与えます。 –