差分
ナビゲーションに移動
検索に移動
[[C Sharp|C#]]における'''仮想関数'''(virtual method)とは、[[オーバーライド]]が可能な[[関数]]([[メソッド]])のことである。
継承元の[[関数]]([[メソッド]])の[[宣言]]に「[[C Sharp/virtualキーワード|'''virtual''']]」と付けることで[[オーバーライド]]が可能であることを明示し、継承先の[[関数]]([[メソッド]])の宣言に「[[C Sharp/overrideキーワード|'''override''']]」と付けることで実際に[[オーバーライド]]することができる。
== 記述例 ==
<source lang="csharp">
// 霊長類クラス
class Primate {
public virtual string SayHello() {
return "うほっ";
}
}
// 日本人クラス
class Japanese : Primate {
public override string SayHello() {
return "こんにちは世界";
}
}
</source>
== 備考 ==
=== Javaとの相違 ===
[[Java]]では基本的にすべての[[関数]]が強制的に[[仮想関数]]になるのに対して、[[C Sharp|C#]]では明示しなければ[[仮想関数]]にはならず[[オーバーライド]]できないという点にハマる人が多いので注意する必要がある。
=== その他 ===
[[C Sharp/virtualキーワード|virtualキーワード]]は、[[C Sharp/メソッド|メソッド]]の他にも、[[C Sharp/プロパティ|プロパティ]]や[[C Sharp/インデクサ|インデクサ]]、[[C Sharp/イベント|イベント]]などに付けることも出来る。
なお、[[C Sharp/仮想プロパティ|仮想プロパティ]]は仮想関数と同様に動作するが、宣言や呼び出しの構文が違うので[[C Sharp|C#]]の構文の中でも混乱しやすいものだと思う。
== 関連項目 ==
* [[仮想関数]]
* [[純粋仮想関数]]
** [[C Sharp/抽象メソッド|C#/抽象メソッド]]([[C Sharp/純粋仮想関数|C#/純粋仮想関数]])
* [[仮想関数テーブル]]
* [[シングルディスパッチ]]
== 参考文献 ==
<references/>
== 外部リンク ==
* http://msdn.microsoft.com/ja-jp/library/9fkccyh4.aspx - virtual (C# リファレンス)
{{stub}}
継承元の[[関数]]([[メソッド]])の[[宣言]]に「[[C Sharp/virtualキーワード|'''virtual''']]」と付けることで[[オーバーライド]]が可能であることを明示し、継承先の[[関数]]([[メソッド]])の宣言に「[[C Sharp/overrideキーワード|'''override''']]」と付けることで実際に[[オーバーライド]]することができる。
== 記述例 ==
<source lang="csharp">
// 霊長類クラス
class Primate {
public virtual string SayHello() {
return "うほっ";
}
}
// 日本人クラス
class Japanese : Primate {
public override string SayHello() {
return "こんにちは世界";
}
}
</source>
== 備考 ==
=== Javaとの相違 ===
[[Java]]では基本的にすべての[[関数]]が強制的に[[仮想関数]]になるのに対して、[[C Sharp|C#]]では明示しなければ[[仮想関数]]にはならず[[オーバーライド]]できないという点にハマる人が多いので注意する必要がある。
=== その他 ===
[[C Sharp/virtualキーワード|virtualキーワード]]は、[[C Sharp/メソッド|メソッド]]の他にも、[[C Sharp/プロパティ|プロパティ]]や[[C Sharp/インデクサ|インデクサ]]、[[C Sharp/イベント|イベント]]などに付けることも出来る。
なお、[[C Sharp/仮想プロパティ|仮想プロパティ]]は仮想関数と同様に動作するが、宣言や呼び出しの構文が違うので[[C Sharp|C#]]の構文の中でも混乱しやすいものだと思う。
== 関連項目 ==
* [[仮想関数]]
* [[純粋仮想関数]]
** [[C Sharp/抽象メソッド|C#/抽象メソッド]]([[C Sharp/純粋仮想関数|C#/純粋仮想関数]])
* [[仮想関数テーブル]]
* [[シングルディスパッチ]]
== 参考文献 ==
<references/>
== 外部リンク ==
* http://msdn.microsoft.com/ja-jp/library/9fkccyh4.aspx - virtual (C# リファレンス)
{{stub}}