仮想メンバー
virtual (Visual Basic では Overridable) メンバーを使用すると、メンバーの異なる実装を提供することによってそのメンバーの動作を変更できます。 通常、仮想メンバーは、型の派生クラスを使用して特定のシナリオの詳細を処理する場合に使用します。 たとえば、WebRequest クラスは、任意の URI (Universal Resource Identifier) に対して要求を送信するための機能を定義します。 FtpWebRequest クラスは WebRequest の派生クラスであり、その仮想メソッドをオーバーライドすることにより、ファイル転送プロトコル (FTP: File Transfer Protocol) スキームを使用する URI に対する要求の送信を処理します。
仮想メンバーのパフォーマンスはコールバックやイベントよりも優れていますが、非仮想メソッドよりは劣ります。
十分な理由があり、仮想メンバーのデザイン、テスト、および保守に関連するすべてのコストを認識している場合を除き、メンバーを仮想メンバーにしないようにします。
異なるバージョン間で仮想メンバーの実装を変更すると、バージョン間に細かな非互換性が生じる可能性があります。 このため、仮想メソッドを正確にデザインし、徹底的にテストするには大きなコストがかかります。
仮想メンバーに対しては、パブリックなアクセシビリティよりも、保護されたアクセシビリティを選択します。 パブリック メンバーは、必要に応じて、プロテクト仮想メンバー関数を呼び出すことにより機能拡張を提供する必要があります。
継承を伴わないすべてのシナリオに必要なメンバーはパブリックである必要があります。
Portions Copyright 2005 Microsoft Corporation. All rights reserved.
Portions Copyright Addison-Wesley Corporation. All rights reserved.
設計ガイドラインの詳細についてを参照してください、「フレームワークの設計ガイドライン。規則、慣用句、および再利用可能なパターン。ネット ライブラリ」本クシシュトフ Cwalina、ブラッド エイブラムス、アスキー、2005 年発表しました。