継承とコンストラクタ

なにも意識せずに継承クラスを作成した場合、クラスのインスタンスを生成すると、まず親クラスのコンストラクタが呼び出され、その後子クラスのコンストラクタが呼び出されるという動作になります。

しかし、この場合に実行される親クラスのコンストラクタは、デフォルトコンストラクタ(引数なしコンストラクタ)のみとなります。

親クラスの引数ありのコンストラクタを呼びたい場合は、サブクラスのコンストラクタにて:baseを記述し、それを明示する必要があります。

■:base(親クラスコンストラクタの引数)

ex)

class Student : Person
{
 private int id; 

 public Student(string name, int age, int id) : base(name, age)
 {
  this.id = id;
 }

 public int Id
 {
  set{this.id = value;}
  get{return this.id;}
 }
}