假设我有一个方法的Java类,我不希望这个类的任何子类,能够覆盖该方法。 我能做到这一点?
Answer 1:
你可以声明该方法是final
,如:
public final String getId() {
...
}
欲了解更多信息,请参阅http://docs.oracle.com/javase/tutorial/java/IandI/final.html
Answer 2:
简单地使该方法决赛 。
Answer 3:
如果你的方法是不是你建造API的一部分,而不是直接由子类调用,只是喜欢让你的方法private
。
如果你的类层次结构包含在单个封装中,让您在包范围的方法(没有作用域的关键字)。 因此,只有外面的世界(包括你的其他自己的包)不能访问它,因此不能覆盖它。
如果你的方法是不是真的你的API的一部分,但必须是子类甚至是外部可见的,宁愿让它protected
和final
最后,如果你的方法是您的API的一部分,使public
和final
。
文章来源: Disallow subclasses from overriding Java method