0

据我所知,Is-a 关系是您的类扩展另一个类的地方,即AextendsB因此A是 a B

而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 is-a B 并且它实现了一个接口 IFSA,所以答案是肯定的。

于 2012-12-25T14:58:00.930 回答