是否有办法防止子类在编译时暴露基类中定义的公共(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/