抽象クラスでは、すべてのメソッドを抽象化してインターフェースのように機能させることができるのに、なぜインターフェースを使用する必要があるのでしょうか?? 私が思いついた理由の 1 つは、複数のクラスを拡張するのではなく、複数のインターフェイスを実装できることです。デザインやパフォーマンスに関連するものはありますか??
3 に答える
2
あなたはすでに答えを得ています。インターフェイスを使用すると、クラスを使用してもうまくいかない複数のタイプの動作を強制できます。たとえば、クラスを強制的に IComparable および Inumerable にすることはできますが、クラスでそれを行う場合は不可能です。
于 2013-05-04T13:55:23.230 に答える
1
インターフェイスでは許可され、抽象クラスでは許可されないことを 1 つ特定しました。1 つのクラスで複数の抽象クラスを拡張することはできません。
デザインやパフォーマンスに関連するものはありますか??
性能差はありません。
ただし、抽象クラス (実際にはすべてのクラス) の単一の継承制限により、これが「設計上の問題」になっていると主張することもできます。確かに、OO 設計でのポリモーフィズムの使用が大幅に制限されます。
(インターフェースがない場合、「インターフェースへのプログラミング」という格言に従うことはできないと主張することもできます。しかし、それは弱い議論です...用語の言い争いです。)
于 2013-05-04T14:10:37.397 に答える