假设我在Java类中有一个方法,并且我不希望该类的任何子类能够覆盖该方法。我能这样做吗?
答案 0 :(得分:54)
您可以将方法声明为final
,如:
public final String getId() {
...
}
有关详细信息,请参阅http://docs.oracle.com/javase/tutorial/java/IandI/final.html
答案 1 :(得分:8)
只需将方法最终。
答案 2 :(得分:4)
如果您的方法不是构建API的一部分,并且不是由子类直接调用,那么更喜欢简单地创建方法private
。
如果您的类层次结构包含在单个包中,请在包范围内创建您的方法(不包括作用域的关键字)。因此,只有外部世界(包括您自己的其他包)才能访问它,因此无法覆盖它。
如果您的方法实际上不是您的API的一部分,但必须通过外部子类可见,请更喜欢将其设为protected
和final
最后,如果您的方法是API的一部分,请将其设为public
和final
。