web-dev-qa-db-ja.com

比較:インターフェースメソッドvs仮想メソッドvs抽象メソッド

これらのそれぞれの長所と短所は何ですか?

  • インターフェースメソッド
  • 仮想メソッド
  • 抽象メソッド

いつ何を選ぶべきですか?この決定をするときに心に留めておくべき点は何ですか?

51
Nawaz

仮想と抽象はほぼ同じです。仮想メソッドは、基本クラスに実装があり、オプションでオーバーライドできますが、抽象メソッドは実装せず、子クラスでmustをオーバーライドできます。それ以外は同じです。それらのどちらを選択するかは、状況によって異なります。基本的な実装がある場合は、仮想を使用します。そうではなく、すべての子孫がそれを自分で実装する必要がある場合は、抽象を選択します。

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

48
GolezTrol