假设我在 Java 类中有一个方法,并且我不希望该类的任何子类能够覆盖该方法。我可以这样做吗?
问问题
11849 次
3 回答
62
您可以将方法声明为final
,如下所示:
public final String getId() {
...
}
有关详细信息,请参阅http://docs.oracle.com/javase/tutorial/java/IandI/final.html
于 2012-10-22T23:32:19.303 回答
9
只需将方法设为 final即可。
于 2012-10-22T23:32:30.110 回答
4
如果您的方法不是您构建的 API 的一部分并且没有被子类直接调用,则更喜欢简单地创建您的方法private
。
如果您的类层次结构包含在单个包中,请将您的方法置于包范围内(没有范围关键字)。因此,只有外部世界(包括您自己的其他软件包)无法访问它,因此无法覆盖它。
如果您的方法不是 API 的真正组成部分,但必须被子类甚至外部可见,则更喜欢 make itprotected
和final
最后,如果您的方法是 API 的一部分,请将其设置public
为final
.
于 2012-10-22T23:38:12.300 回答