0

私が知る限り、Is-a関係は、クラスが別のクラスを拡張する場所です。つまり、extendsAはです。BAB

そして、has-a関係は、クラスがインターフェースを実装するときでAあり、アルゴリズムを持っています。

私の質問:is-aがhas-aでもあるという状況はありますか?

または、インターフェイスの実装がis-aリレーションになる可能性がある場所はどこですか?

それをリフェーズさせてください:

クラスがインターフェースを実装している場合、クラスはis-a関係を持つことができますか?

4

3 に答える 3

5

また、has-a 関係とは、クラスがインターフェイスを実装するため、A に Aalgoritm がある場合です。

このステートメントは間違っています。インターフェースを実装する場合、依然として Is-A 関係です。

Has-A 関係 (構成) は次のようなものです。

Class ABC {
private XYZ z;
}

ABC には XYZ があります。

于 2012-12-25T14:51:19.627 に答える
0

私のhas a関係の理解は、インターフェイスの実装ではなく、構成で表現されます。

個人的には、同時に起こる可能性があるis-aと思います:has-a

class Foo{
 Bar bar;
}

Foo is a(n) Object.
Foo has a(n) Object. (Bar is Object too.)
于 2012-12-25T14:52:58.050 に答える
0

has-a リレーションはインターフェースとは何の関係もありません。むしろ、A がタイプ B のメンバーを持っているか、A が B をカプセル化しているようなものです。

あなたの質問については、次の点を考慮してください。

interface IFSA {
     void foo();
 }

 class A implements IFSA { 
     void foo(){}
 }

 class B extends A {}

A は B であり、インターフェイス IFSA を実装しているため、答えはイエスです。

于 2012-12-25T14:58:00.930 に答える