メインメニューを開く
imported>Administrator
(ページの作成:「C#における'''仮想関数'''(virtual method)とは、オーバーライドが可能な関数メソッド)のことである。 継...」)
 
imported>Administrator
 
(同じ利用者による、間の4版が非表示)
23行目: 23行目:
  
 
=== Javaとの相違 ===
 
=== Javaとの相違 ===
[[Java]]では基本的にすべての[[関数]]が強制的に[[仮想関数]]になるのに対して、[[C Sharp|C#]]では明示しなければ[[仮想関数]]にはならず[[オーバーライド]]できないという点にハマる人が多いので注意する必要がある。
+
[[Java]]では基本的にすべての[[関数]]([[メソッド]])が暗黙的・強制的に[[仮想関数]]になるのに対して、[[C Sharp|C#]]では明示しなければ[[仮想関数]]にはならず[[オーバーライド]]できないという点にハマる人が多いので注意する必要がある。
  
 
=== その他 ===
 
=== その他 ===
31行目: 31行目:
  
 
== 関連項目 ==
 
== 関連項目 ==
* [[仮想関数]]
+
* [[仮想関数]] - 継承先でオーバーライドする「かも」という関数。
* [[純粋仮想関数]]
+
* [[純仮想関数]] - 継承先でオーバーライドする「必要」がある関数。
** [[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#の構文の中でも混乱しやすいものだと思う。

関連項目編集

参考文献編集


外部リンク編集