禁止子类覆盖Java方法

时间:2012-10-22 23:30:58

标签: java class methods subclass

假设我在Java类中有一个方法,并且我不希望该类的任何子类能够覆盖该方法。我能这样做吗?

3 个答案:

答案 0 :(得分:54)

您可以将方法声明为final,如:

public final String getId() {
   ...
}

有关详细信息,请参阅http://docs.oracle.com/javase/tutorial/java/IandI/final.html

答案 1 :(得分:8)

只需将方法最终

答案 2 :(得分:4)

如果您的方法不是构建API的一部分,并且不是由子类直接调用,那么更喜欢简单地创建方法private

如果您的类层次结构包含在单个包中,请在包范围内创建您的方法(不包括作用域的关键字)。因此,只有外部世界(包括您自己的其他包)才能访问它,因此无法覆盖它。

如果您的方法实际上不是您的API的一部分,但必须通过外部子类可见,请更喜欢将其设为protectedfinal

最后,如果您的方法是API的一部分,请将其设为publicfinal