Java:防止子类提供与基类不同的接口(interface)

标签 java

是否有办法防止子类在编译时暴露基类中定义的公共(public)方法以外的公共(public)方法?

例如:

abstract public class AClass {

   abstract public void anAllowedMethod();

}

public class BClass extends Aclass {

    public void anAllowedMethod() {

    }

    public void anAdditionalNonAllowedMethod() {

    }

    private void thisMethodIsAllowedBecauseItsNotPublic() {

    }

}

也许我可以在 AClass 中使用一些关键字来声明子类只能实现 AClass 中定义的方法(即“anAllowedMethod()”)?

最佳答案

不是真的。当您定义一个类并说它扩展/实现另一个类时,它必须遵守它扩展/实现的类的契约(Contract)。进一步包含所述类的行为没有限制。

In a project I'm working on, some developers are adding extra methods to the subclass which are not necessary

如我所见,这实际上意味着您的设计将因开发人员为所欲为(通过向对象添加新的公共(public)行为)而分崩离析。

不幸的是,如果您不管理您的设计,一旦它进入实现阶段(编码),坏事肯定会发生。请考虑审核流程(自动/手动)

关于Java:防止子类提供与基类不同的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1275827/

相关文章:

java - 如何使这段代码更简单、更短,Java

java - Oracle 查询返回为 Hasmap<String, String>

java - MCS锁实现中的问题-JAVA

java - 以编程方式配置嵌入式 undertow 服务器

java - Java中通过JSON调用带参数的方法

java - 排序 java.util.Deque

java - 正则表达式替换电子邮件

java - 请解释以下代码的作用?

java - 通过 jni 将相同的 Android surfaceview 传递给 C++ 代码会导致不同的值

java - 如何在appium-android中向上/向下滚动