java - 限制可以在 Java 中实现接口(interface)的类

标签 java oop inheritance

开始之前:我知道 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/

相关文章:

java - 在标准 JAXB2 POJO 中绑定(bind)嵌套元素

java - Java 中的继承和泛型的使用

java - 如何从父类(super class)对象调用子类方法

c++ - 如果将对象转换为实际类型,使用虚函数是否有任何成本?

java - 删除链表中的第k个元素(Java实现)

java - Swagger ApiModelProperty 不起作用

objective-c - 如何共享其他类的方法

objective-c - dateByAddingTimeInterval 参数语法

java - 添加到列表抛出的前面?

c# - 面向对象的方法设计选项