親クラスの機能を使う「baseキーワード」とは?
C#の baseキーワード は、継承関係にあるクラスで、
親クラス(基底クラス)のコンストラクタ・メソッド・プロパティなどにアクセスするために使います。
主な用途
- 親クラスのコンストラクタを呼び出す
- オーバーライドしたメソッドの中で親のメソッドも呼ぶ
- 親のプロパティやフィールドを明示的に参照する
1. コンストラクタの呼び出し
public class Animal {
public Animal(string name) {
Console.WriteLine(name + " が誕生しました。");
}
}
public class Dog : Animal {
public Dog() : base("犬") {
Console.WriteLine("ワンワン!");
}
}
base("犬")
によって、親クラスのコンストラクタ Animal(string name)
を呼び出しています。
2. オーバーライドしたメソッド内で親の処理も実行
public class Animal {
public virtual void Speak() {
Console.WriteLine("何かの動物が鳴く");
}
}
public class Cat : Animal {
public override void Speak() {
base.Speak(); // 親のメソッドも実行
Console.WriteLine("ニャー!");
}
}
3. 親クラスのプロパティやフィールドへのアクセス
public class Parent {
protected string message = "親のメッセージ";
}
public class Child : Parent {
public void ShowMessage() {
Console.WriteLine(base.message); // 親クラスのフィールドを参照
}
}
注意点
base
は継承関係があるときにのみ使用可能
- 親クラスのアクセスレベル(protectedやpublic)に注意
this
は「自分自身」、base
は「親クラス」を指す
thisとbaseの違い
キーワード |
参照先 |
主な使い道 |
this |
現在のインスタンス自身 |
フィールド・メソッドの参照、メソッドチェーンなど |
base |
親クラス(基底クラス) |
コンストラクタ呼び出し、オーバーライドメソッド内での親の処理呼び出し |
まとめ
baseキーワードは、継承されたクラスの中で、親クラスの機能にアクセスするための便利な手段です。
base()
で親のコンストラクタを呼び出したり、base.Method()
で親の処理も実行することで、
コードの再利用性と柔軟性を高めることができます!