【发布时间】:2015-04-24 15:27:11
【问题描述】:
在我的抽象类中,我有这样的东西:
public Object methodIWantToExpose(){
// ...
methodIDontWantExposed()
// ...
}
protected abstract void methodIDontWantExposed();
问题是,我想强制扩展 methodIDontWantExposed() 的人使其受到保护,因为我不希望扩展类同时暴露 methodIDontWantExposed 和 methodIWantToExpose。
有没有办法做到这一点(或可能避免我的问题的不同方法)?
【问题讨论】:
-
您想确保任何具体的子类都不会公开 methodIDontWantExposed?
-
子类可以导出任何可以从超类访问的行为。持有该行为的方法的访问级别无关紧要。
-
就像在现实世界中一样,父母只能做很多事情来阻止他们的孩子做一些愚蠢的事情。
-
恐怕你正在尝试的是你最好避免的事情的症状。因此,也许有更好的设计解决方案可以解决您的问题。如果您愿意分享您真正想要实现的目标,您可能会得到比简单的“否”更好的答案。
-
想象一下,如果这是可能的。那么是什么阻止子类添加
public void callMethodIDontWantExposed() {methodIDontWantExposed();}呢?
标签: java access-modifiers