2012-01-19 72 views
7

以下是否正常? (记住,我没有写类的机构,我也没写界面;-))超类和子类每个都有它自己的接口

abstract class SuperClass implements SuperInterface 

class SubClass extends SuperClass implements SubInterface 

还是这通常被认为是不好的做法?

是什么让我奇怪的是,那下面没有工作:

List<SubInterface> myList; 
... 
for(SuperInterface si : myList) { 
    ... 
} 
+0

此代码不能正确,请重新检查。 – SHiRKiT

+0

你有没有理由怀疑这是不好的做法?你能解释一下这些原因吗? – Jesper

+3

为什么不能正确?对我来说看起来很好 –

回答

10

这是既不好也不坏的延伸。​​这里实现了SuperInterfaceSubInterface(以及由SuperClass公共方法定义的接口)。如果这就是你需要的 - 那很好。

至于你的第二个例子

List<SubInterface> myList; 
... 
for(SuperInterface si : myList) { 
    ... 
} 

你宣布SubInterface元素的列表,而是希望获取从中SuperInterface元素。如果SubInterface延伸SuperInterface那么这有一定意义。否则不是。

+0

对,非常感谢您的解释! –

1

,这是好的这取决于你想要达到什么样的(有可能是你正在尝试做一个更好的设计)请记住,子类是超级接口和子接口

3

这是正确的。为什么不 ?

您的SuperClass实现了一个SuperInterface,它也由您的子类实现(感谢SubClass extends SuperClass)。

此外,您的子类实现另一个接口(SubInterface)。

你的代码/架构没有错。

SuperClass -- implements --> SuperInterface 
SubClass -- extends --> SuperClass -- implements --> SuperInterface*, SubInterface 
  • 隐器具由于超
相关问题