从覆盖Java方法不允许子类(Disallow subclasses from overriding

2019-07-01 20:50发布

假设我有一个方法的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的一部分,但必须是子类甚至是外部可见的,宁愿让它protectedfinal

最后,如果你的方法是您的API的一部分,使publicfinal



文章来源: Disallow subclasses from overriding Java method