C Sharp/仮想関数

提供: MonoBook
移動: 案内検索

C#における仮想関数(virtual method)とは、オーバーライドが可能な関数メソッド)のことである。

継承元の関数メソッド)の宣言に「virtual」と付けることでオーバーライドが可能であることを明示し、継承先の関数メソッド)の宣言に「override」と付けることで実際にオーバーライドすることができる。

記述例[編集]

// 霊長類クラス
class Primate {
    public virtual string SayHello() {
        return "うほっ";
    }
}
 
// 日本人クラス
class Japanese : Primate {
    public override string SayHello() {
        return "こんにちは世界";
    }
}

備考[編集]

Javaとの相違[編集]

Javaでは基本的にすべての関数メソッド)が暗黙的・強制的に仮想関数になるのに対して、C#では明示しなければ仮想関数にはならずオーバーライドできないという点にハマる人が多いので注意する必要がある。

その他[編集]

virtualキーワードは、メソッドの他にも、プロパティインデクサイベントなどに付けることも出来る。

なお、仮想プロパティは仮想関数と同様に動作するが、宣言や呼び出しの構文が違うのでC#の構文の中でも混乱しやすいものだと思う。

関連項目[編集]

参考文献[編集]


外部リンク[編集]