我想在书中指出这一行" Java in a Nutshell"这让我有些困惑:
私有方法不是由子类继承的,因此不能被覆盖(即,所有私有方法都是隐式最终的)。
我解释说所有私有方法都是最终的,我理解:
我的陈述是否正确?
答案 0 :(得分:2)
不能覆盖最终方法,但可以从子类调用它们。
这可能是也可能不是,取决于修饰符,以及覆盖类的位置。如果方法是private或default(无修饰符),那么除非您的子类在同一个包中,否则不能从子类调用该方法。
不能覆盖私有方法,也不能从子类调用它们。
真。私有方法无法被覆盖的原因是因为它们无法被看到。但这并不意味着无法覆盖的方法是私有的。
答案 1 :(得分:1)
在我看来,如果你继续考虑这个关键词会有所帮助。
私有
这是访问修饰符,它说明哪个类可以看到此方法。 (即只有这个类,子类,包中的其他类)。因此,任何标记为私有的方法只能在同一个类中看到。因此,您的语句是正确的,因为从任何子类都看不到标记为private的方法,更不用说重写或调用了。
最终
这表明任何具有此方法{}的内容都无法从外部更改。因此,任何标记为final的方法都不能被覆盖。但是,标记为final的方法可以从其他类调用,具体取决于其访问修饰符。因此,关于final的声明也是正确的,但调用部分再次严格依赖于方法的访问修饰符。
答案 2 :(得分:0)
private
无法覆盖
private
无法在外部类中使用,例如子类。
final
方法隐含最终,因此您无法覆盖。
{{1}}方法并非总是隐私,因此如果不是私有的话,您可以在子类中进行访问。