-1

重複の可能性:
Javaのインターフェースとは何ですか?

私はオブジェクト言語とオブジェクトパラダイムの経験がありますが、「実装」ステートメントについて疑問が1つあります。コード(機能)が含まれているのではないでしょうか?具体的には、「MyClassはXInterfaceを実装しています」には、そのインターフェイスを実装する他のクラスのコードが含まれていますか?

クラスの継承はコードを含めて単純です。ある意味、「含む」は正しい言葉ではないかもしれませんが、「extends」を使用する場合はそれが話し合いの場です。親クラスの機能を含めます。

たとえば、Runnableインターフェースを使用しましょう。run()の減速は1つだけです。これは何の意味もありません。MyClassにrun()が実装されるだけです。そして、それは私を混乱させるものです。たとえば、あるファイルに1行の減速を実装すると、私はいくつかの良いものになります...「実装」を使用して得られる実際の機能(およびコード)はどこにありますか?したがって、私が使用する場合:

MyClass implements Runnable {}

Runnable obj = new (Runnable) MyClass();

obj.run();//will call run() implementation from MyClass
obj.otherFunctions();/* so this calls functions from other classes that implement interface, but I don't know what functions from other classes are implementing, or even do I need them?*/

また、スレッドごとに1つのクラスが必要MyClass extends Thread implements Runnableですか?

4

1 に答える 1

2

インターフェイスを実装するクラス Cl は、インターフェイスで定義されているすべてのメソッドをクラス Cl で実装する必要があることを意味します。Cl がインターフェイスを実装 (フルフィル) することがわかっているため、呼び出し側のクラスはこれらのメソッドを呼び出すことができます。

たとえば、List インターフェイスを参照してください。ArrayList と LinkedList は両方とも List を実装し、同じパブリック メソッド (add()、get() など) を持ちますが、内部的には異なって動作します。

List list = new ArrayList();
list.add(3);

後で誰かが ArrayList を別のクラス (List も実装する) と交換したい場合、交換する必要があるのは 1 行だけです。

List list = new LinkedList();
list.add(3);

インターフェイスにプログラミングする場合、コードは特定のクラスにあまり依存しません。これには、テスト ケースによってそのクラスを制御できる、たとえばテストの目的で後で 1 つのクラスを交換する場合に利点があります。

于 2012-12-09T22:53:38.180 に答える