据我所知,Is-a关系是您的类扩展另一个类的地方,即A
扩展B
因此A
是B
。
一个has-a关系就是一个类实现一个接口,所以A
有一个算法。
我的问题:是否存在is-a也是a-a的情况?
或实现接口可以成为is-a关系?
让我重新说一下:
如果一个类实现了一个接口,那么它是否具有is-a关系?
答案 0 :(得分:5)
有一个关系是当一个类实现一个接口,所以A有 Aalgoritm。
这种说法是错误的。如果你实现一个接口仍然是一个Is-A关系。
Has-A关系(组合)是这样的:
Class ABC {
private XYZ z;
}
ABC有一个XYZ。
答案 1 :(得分: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.)
答案 2 :(得分:0)
has-a关系与接口无关 - 它更像A有一个B类或A类成员封装B。
关于您的问题,请考虑以下事项:
interface IFSA {
void foo();
}
class A implements IFSA {
void foo(){}
}
class B extends A {}
A是-a B,它实现了IFSA接口,所以答案是肯定的。