开始之前:我知道 this question在我的情况下,这个答案是行不通的。
假设我有:
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 原则,或者这样做是否是错误代码的标志?
最佳答案
我看到的唯一选择是将接口(interface)设为包私有(private)并通过位于同一包中的公共(public) SuperClass
实现它。这样,您的包的用户将能够子类化 SuperClass
,但不能直接实现您的接口(interface)。请注意,这种方式界面本身变得不是很有用,因为外面的人甚至都看不到它。
一般来说,您的问题似乎可以通过删除接口(interface)并将其替换为 SuperClass
来解决。
关于java - 限制可以在 Java 中实现接口(interface)的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33007574/