「C Sharp/仮想関数」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
imported>Administrator
 
32行目: 32行目:
 
== 関連項目 ==
 
== 関連項目 ==
 
* [[仮想関数]] - 継承先でオーバーライドする「かも」という関数。
 
* [[仮想関数]] - 継承先でオーバーライドする「かも」という関数。
* [[純仮想関数]] - 継承先でオーバーライドする必要がある関数。
+
* [[純仮想関数]] - 継承先でオーバーライドする「必要」がある関数。
 
** [[C Sharp/抽象メソッド|C#/抽象メソッド]]([[C Sharp/純粋仮想関数|C#/純仮想関数]])
 
** [[C Sharp/抽象メソッド|C#/抽象メソッド]]([[C Sharp/純粋仮想関数|C#/純仮想関数]])
 
* [[仮想関数テーブル]]
 
* [[仮想関数テーブル]]

2012年5月30日 (水) 06:33時点における最新版

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#の構文の中でも混乱しやすいものだと思う。

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]


外部リンク[編集 | ソースを編集]