1

コードをリファクタリングしているので、インターフェイスまたは抽象クラスについて決定する必要があります。基本クラスPlayerと、VideoPlayer、MusicPlayerなどと呼ばれる基本クラスを継承するクラスがあります。基本クラスには、実装のない抽象メソッド(Play)があります。それで、好ましい方法は何ですか?Playをインターフェイスに配置するか、抽象クラスのままにします。MusicPlayerでの再生は、VideoPlayerのPlayerと同じではありません。私はC#でそれを行います。

class Player
{
    abstract void Play();
} 

class VideoPlayer : Player
{
    void Play()
    {
      //Some code.
    }
}

class MusicPlayer : Player
{
    void Play()
    {
      //Some code.
    }
}
4

6 に答える 6

9

継承したい基本機能がない場合は、インターフェースを使用してください。抽象クラスは、継承したい部分的な実装がある場合に使用されます。

于 2013-02-04T23:07:23.470 に答える
6

一般的なことの1つは、両方を行うことです

a)インターフェースを提供します。また、オブジェクトを使用するとき(つまり、playメソッドを呼び出すとき)にインターフェイスを使用します。

b)一般的な配管がある場合のインターフェースを実装する基本クラスを提供します。一般的な方法など。これは、実装者がオプションで使用するためのヘルパーです。

このようにして、IAmAPlayerの実装者は、そのインターフェイスを簡単に実装できます。または、ユースケースが基本クラスと一致する場合は、それを使用できます。

于 2013-02-04T23:14:38.943 に答える
3

一般に、メソッドを呼び出すことができることを示すだけの場合は、インターフェイスを使用します。インターフェイスは、部分的に単一継承の問題を解決するように設計されています。親に共通のメソッドを実装していない場合は、インターフェイスを使用します。

于 2013-02-04T23:07:31.317 に答える
1

単純にする。インターフェイスを使用できる場合は、それを実行してください。インターフェイスを使用できない場合は、抽象クラスを使用してください。

于 2013-02-04T23:15:34.033 に答える
1

インターフェイスの継承とクラスの継承の違いを理解する必要があります。

抽象クラスは、似たようなクラスのクラス階層をモデル化するために使用されます(たとえば、Animalは抽象クラスであり、Human、Lion、Tigerは具象派生クラスである可能性があります)

インターフェイスは、インターフェイスを実装するクラスのタイプを気にしない2つの類似/非類似クラス間の通信に使用されます(たとえば、高さはインターフェイスプロパティであり、Human、Building、Treeで実装できます。食べることができるかどうかは関係ありません) 、あなたは泳ぐことができますあなたは死ぬことができますまたは何でも..それはあなたが身長を持っている必要があることだけが重要です(あなたのクラスでの実装))

これで、ここで、例として両方が必要になる可能性があることを理解できます。他の多くのクラスの中でPlayメソッドを使用する可能性があると確信している場合は、他のクラスがインターフェイスを介してメソッドを使用できるように、インターフェイスを実装することをお勧めします。

于 2013-02-08T15:40:12.487 に答える
1

考慮すべきことの 1 つは、インターフェイスでは、抽象クラスが実装されていないすべてのプロパティとメソッドを実装する必要があることです。細かい点ですが、アセンブリの複数のバージョンをサポートする必要がある場合があります。

于 2013-02-05T00:46:37.213 に答える