オーバーライドされた基底クラスのメソッドの呼び出し方

プログラミングC# 第6版 4.5


メソッドを派生クラスでオーバーライドした時に、基底クラスのオーバーライドされたメソッドをどうやって呼び出すかという話。

using System;

class CBase {
    public virtual void Foo () {
        Console.WriteLine("CBase.Foo");
    }
}
class CClass : CBase {
    public override void Foo () {
        Console.WriteLine("CClass.Foo");
        
        // baseという特殊な変数が定義されているのでそれを使う。
        base.Foo();
    }
}

class Program {
    static void Main () {
        CClass cobj1 = new CClass();
        
        cobj1.Foo();
    }
}
$ main
CClass.Foo
CBase.Foo

baseという特殊な変数経由でFooを呼び出すだけです。

C++ではこういう場合「CBase::Foo()」のようにクラス名を付けて呼び出さないといけませんでしたが、C#ではbaseという変数に統一されているので便利ですね。