2

重複の可能性:
抽象クラスの代わりにインターフェイスを使用する場合とその逆の場合は?
インターフェイス vs 抽象クラス (一般的なオブジェクト指向)

私は持っている

public interface MyInterface
{
  void Execute();
}

public abstract class MyAbstractClass
{
  public abstract void Execute();
}

クラスがそれらを実装する場合、抽象クラスとインターフェースの違いは何でしょうか? 抽象クラスに抽象メソッドが1つしかない場合、クラスがそれらを実装する理由はいつですか?

この質問は昨日のインタビューで私に聞かれました..私は答えられませんでした..

前もって感謝します

4

2 に答える 2

5

これが重複している場合でも、私はあなたのためにそれを明確にしようとします:

クラスがそれらを実装する場合、抽象クラスとインターフェースの違いは何でしょうか?

抽象クラスを使用する場合の違いは、抽象クラスから継承してから抽象メソッドをオーバーライドする必要があることです。

インターフェイスを使用する場合は、このクラスから継承せずにメソッドを実装する必要があるため、必要に応じて別のクラスから継承する柔軟性が得られます

抽象クラスに抽象メソッドが1つしかない場合、クラスがそれらを実装する理由はいつですか?

いずれかを選択するためにメソッドの数について考えないでください。一方を他方に対して使用する場合に得られるトレードオフについて考えてください。

  • 抽象クラスを使用することにした場合、派生クラス機能するために抽象クラスから継承する必要があります。また、C# では単一のクラスからしか継承できないため、抽象クラスに縛られます。

  • インターフェイスを実装すると、別のクラス階層から継承できるようになります。つまり、インターフェイスを使用すると、最も柔軟な設計が可能になります。

抽象クラスは、子クラスが継承するコードの基本部分を書きたい場合に非常に便利です。その場合、抽象クラスで記述されたコードを再利用して、子クラスで効果的に少ないコードを記述できます。また、抽象メソッドをオーバーライドして独自の実装を提供することもできます

于 2012-07-20T05:27:12.710 に答える
1

私たちが知っているように、1つのことを実装するためのoopには多くの方法がありますが、ベストプラクティスに従うか、特殊な方法を使用する必要があります。

あなたのシナリオでは、インターフェースと抽象クラスに大きな違いはありませんが、インターフェースと抽象の違いの概念を理解する必要があります。ここに素晴らしい記事があります:差分インターフェースと抽象クラス

于 2012-07-20T05:20:57.470 に答える