【发布时间】:2015-01-20 14:56:28
【问题描述】:
我想在“Java in a Nutshell”一书中指出这句话,这让我有些困惑:
私有方法不被子类继承,因此不能被覆盖(即所有私有方法都是隐式最终的)。
我解释说所有私有方法都是最终的,并且我理解:
- 最终方法不能被覆盖,但可以从子类中调用。
- 不能重写私有方法,也不能从子类中调用它们。
我的说法正确吗?
【问题讨论】:
-
final 方法不能被覆盖。这就是 final 所做的一切。它们可以或不能被子类调用,具体取决于它们的可见性修饰符(公共、私有、受保护或无)。 docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
-
文字是说
private方法是final,不是别的。所以,Final 方法不能被覆盖,但可以从子类调用是一种误解。第二个说法是正确的。 -
你是对的。那时我并没有考虑到知名度。
-
如果我没记错的话,这本书还谈到了最终方法的优化。我认为他们将
final带入此上下文的原因是表明同样的优化也适用于私有方法。
标签: java overriding private final