据我所知,Is-a 关系是您的类扩展另一个类的地方,即A
extendsB
因此A
是 a B
。
而has-a关系是当一个类实现了一个接口,所以A
有一个算法。
我的问题:是否存在过 is-a 也是 has-a 的情况?
或者在哪里实现一个接口可以成为一个 is-a 关系?
让我重新定位:
如果一个类实现了一个接口,它可以有一个 is-a 关系吗?
而has-a关系是当一个类实现一个接口时,所以A有一个Aalgoritm。
这种说法是错误的。如果你实现一个接口,它仍然是一个 Is-A 关系。
Has-A 关系(组合)是这样的:
Class ABC {
private XYZ z;
}
ABC 有一个 XYZ。
我对has a
关系的理解是用组合来表达的,而不是接口实现。
就个人而言,我认为is-a
并且has-a
可能同时发生:
class Foo{
Bar bar;
}
Foo is a(n) Object.
Foo has a(n) Object. (Bar is Object too.)
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,所以答案是肯定的。