在我们开始之前:我知道this question,在我的情况下,答案将不起作用。限制可以实现Java接口的类
所以我们可以说我有:
interface Iface
class SuperClass (this one is from external library and can't be changed)
class SubClass extends SuperClass
class OtherClass
有没有办法让这个Iface
只能通过SuperClass
和它的子类来实现?因此,在这种情况下:
class SuperClass implements Iface - would be good if I could edit that class
class SubClass implements Iface - good
class OtherClass implements Iface - bad
方问题:是对OOP原则抑或是糟糕的代码标志这样做呢?
如果最终限制'Iface'的可能实现,它可能表明您尝试使用_wrong_工具来解决您的问题。 – Spotted
@斑点嗯,也许我是。我只是试图限制它只适用于它的类。 Iterable对于集合是有意义的,但对整数或PrintWriter没有意义。在我的例子中,'Iface'接口只对'SuperClass'的子类有意义,但我想保留它作为一个接口。如果我让他们类,我不能使用多重继承。如果不是'Iface',我会拥有'Iface1','Iface2'和'Iface3',这意味着要制作7个不同的类并扩展它们,而不是扩展'SuperClass'并添加所需的任何接口。 – CypherAJ
当然,'PrintWriter'实现'Iterable'是没有意义的。但是这会对“Iterable”接口的可见性/可访问性产生影响吗?当然不是,因为只要合同满了(=提供了接口方法的实现),每个人都应该被允许实现一个接口。 – Spotted