2011-01-21 8 views

答えて

37

バーチャルとアブストラクトはほぼ同じです。仮想メソッドには、基本クラスの実装があり、オプションでオーバーライドできます。抽象メソッドはありません。は、子クラスでは、をオーバーライドする必要があります。それ以外の場合は同じです。それらの間の選択は状況によって異なります。あなたが基本的な実装を持っているなら、あなたはvirtualを使います。そうしないと、すべての子孫がそれ自身のために実装する必要がある場合は、抽象を選択します。

インターフェイスメソッドは、クラスが実装するインターフェイスで宣言されたメソッドの実装です。これは他の2つとはまったく関係ありません。私は方法が仮想とインターフェースの両方になると思う。インターフェースの利点は、全く異なる2つのクラスで実装できる1つのインターフェース(duh)を宣言することです。こうすることで、呼び出すメソッドが共有するインターフェイスで宣言されている限り、同じコードを2つの異なるクラスで実行できます。

+4

の詳細については、http://stackoverflow.com/a/3621600/8151を参照してください。 tl; dr:インタフェースメソッドは、発行されたILで仮想宣言されます。 – cori

関連する問題