|
|
1
5
或 扩展接口:
注意,接口不能 实施 其他接口(很可能是因为它们没有实现)。
Java不为类与接口强加任何命名约定(与之相反)
在这里,您可以清楚地看到,在
|
|
|
2
3
是一个有用的问题。接口可以用作与应用程序的契约,然后可以使用基类来扩展该接口,因此它是松散耦合的。 以注入依赖模式为例: 你首先要写一份合同:
然后你用一个基本类来扩展你的合同:
现在您可以选择将基础扩展到两个或更多具体类:
我希望这个小例子可以消除扩展和实现之间的差异。抱歉,我没有用Java作为例子,但都是OO,所以我想你会明白的。 谢谢你的阅读,geo 我没有完成注入依赖模式的代码,但是这个想法已经存在了,并且在网络上有很好的文档记录。如果有任何问题,请告诉我。 |
|
3
3
实际上,您可以扩展一个接口——在您定义另一个接口的情况下。
关于这个问题,有很多类似宗教的争论,我怀疑有一个明确的正确答案,但我的看法是值得的。使用
子类化
(即
注意,这两个类并不是互斥的;事实上,如果一个超类实现了一个接口,那么任何子类也将被视为实现该接口。
在Java中没有多重继承,所以(子)类只能有一个父类,并且应该仔细考虑子类,以便选择一个合适的父级;如果只存在少量的类的能力,如果有其他明智的父类,那么选择一个父级的父类很有可能在以后的挫折中结束。锿。例如,有一个
此外,与实现接口相比,子类化更能将您与实现细节(父级)联系起来。我会说,一般来说,最好只实现接口,至少在最初,并且只在具有清晰层次结构的相同或类似包中形成类的类层次结构。 |
|
|
4
0
就像你说的。这个
这取决于你想做什么。通常,当您想要强制实现(如契约)时,您将使用一个接口。类似于
记住,在Java中,只能扩展一个类,并为实现类实现0到多个接口。与C不同,在C中,可以使用
|
|
|
5
0
扩展关键字用于扩展具体/抽象类。通过扩展,您可以重写父类的方法/继承它们。类只能扩展类。 你也可以说接口1扩展了意向面2。 implements关键字用于实现接口。在这种情况下,您必须定义接口中指示的所有方法。类只能实现接口。 |