-1

重複の可能性:
抽象クラスまたはインターフェースをいつ使用するか?

私は抽象クラスとインターフェースについて知っています。しかし、抽象クラスのみを使用し、インターフェースは使用せず、インターフェースのみを使用し、抽象クラスは使用しないというリアルタイムのシナリオを知りたいと思います。誰かがそのような例を教えてくれますか。

2つ目は、多重継承の必要性が生じた場合に使用されると思います。つまり、クラスはすでにいくつかのクラスを継承しているため、ここでは抽象クラスを使用できません。インターフェイスのみを使用する必要があります。同じように、抽象のみを使用し、インターフェースは使用しない例が必要です。

編集済み

インターフェイスにさらにいくつかのポイントを追加するだけです。

Javaライブラリコレクションを検討してください

                          Collections

            List                                Set

3つすべてがインターフェースですが、主要なものですが、add、addAll、contains、containsAllなどの共通の関数があります。Listはそれ自体で実装し、setは別の方法で実装します(重複について説明します)。セットは重複を許可しませんリストは重複を許可します。

だから私が言おうとしているのは、スーパーインターフェースのサブインターフェースに共通の機能がないときはいつでも、インターフェースのために行かなければならないということです

しかし、両方が抽象クラスとしてそれを維持しているいくつかの共通の機能がある場合。

JavaAPIで実行される実用的な例が必要です。ありがとう。シンドゥ

4

2 に答える 2

0

抽象クラスは、API を定義しているインターフェースとはあまり関係のない一般的な機能に適しています。

抽象クラスのサブクラス以外の実装がない場合は、インターフェイスをスキップできます。ただし、ユニットテスト用のモック実装を作成できるように、常にインターフェイスが必要なので、実用的な例を思いつくことはできません。

抽象クラスをスキップすることは、はるかに一般的です。その場合、各アイテムはインターフェースを尊重しますが、実装を共有しません。JDBC、FTP などの実装を備えた「ConnectionService」インターフェースがある場合があります。これらの実装はプロトコルに固有であるため、抽象クラスは値を追加しません。

于 2012-05-17T19:35:11.297 に答える
0

通常、クラスがチェーン内の前のクラスから継承できるようにする場合は、スーパー クラス階層を使用します。

スーパークラスは動物かもしれません

動物は草食動物でも肉食動物でもかまいません。

草食動物は馬になることができます。

肉食動物はオオカミになることができます。

馬はフォーンになることができます。

オオカミはカブになることができます。

等々。

通常、特定の機能を強制的に追加したい場合にのみインターフェイスを実装しますが、インターフェイスはメソッド シグネチャのみを実装し、実際の機能は実装しないため、ケースバイケースで異なります。あなたはそれを書かなければなりません。

于 2012-05-17T19:35:16.077 に答える