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

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
imported>Administrator
23行目: 23行目:
  
 
=== Javaとの相違 ===
 
=== Javaとの相違 ===
[[Java]]では基本的にすべての[[関数]]が暗黙的、強制的に[[仮想関数]]になるのに対して、[[C Sharp|C#]]では明示しなければ[[仮想関数]]にはならず[[オーバーライド]]できないという点にハマる人が多いので注意する必要がある。
+
[[Java]]では基本的にすべての[[関数]]([[メソッド]])が暗黙的・強制的に[[仮想関数]]になるのに対して、[[C Sharp|C#]]では明示しなければ[[仮想関数]]にはならず[[オーバーライド]]できないという点にハマる人が多いので注意する必要がある。
  
 
=== その他 ===
 
=== その他 ===

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

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

関連項目

参考文献


外部リンク