为什么Java中的私有方法是隐式的final?

为什么Java中的私有方法是隐式的final?,java,overriding,private,final,Java,Overriding,Private,Final,简而言之,我想在《Java》一书中指出这句话,这让我有些困惑: 私有方法不是由子类继承的,因此不能被重写,即所有私有方法都是隐式最终的 我解释说所有私有方法都是最终的,我理解: 不能重写Final方法,但可以从子类调用它们。 不能重写私有方法,也不能从子类调用它们。 我的陈述正确吗 不能重写Final方法,但可以从子类调用它们 这可能是真的,也可能不是真的,这取决于修饰符和重写类所在的位置。如果该方法是private或default no修饰符,则不能从子类调用该方法,除非您的子类位于同一个包中

简而言之,我想在《Java》一书中指出这句话,这让我有些困惑:

私有方法不是由子类继承的,因此不能被重写,即所有私有方法都是隐式最终的

我解释说所有私有方法都是最终的,我理解:

不能重写Final方法,但可以从子类调用它们。 不能重写私有方法,也不能从子类调用它们。 我的陈述正确吗

不能重写Final方法,但可以从子类调用它们

这可能是真的,也可能不是真的,这取决于修饰符和重写类所在的位置。如果该方法是private或default no修饰符,则不能从子类调用该方法,除非您的子类位于同一个包中

不能重写私有方法,也不能从子类调用它们


对。私有方法无法被重写的原因是它们无法被看到。但是,这并不意味着不能被重写的方法是私有的。

在我看来,如果您在接下来考虑这些关键字,这将有所帮助

私人的

这是访问修饰符,它说明哪个类可以看到这个方法。i、 e只有这个类、子类和包中的其他类。因此,任何标记为private的方法只能从同一类中看到。因此,您的语句是正确的,因为从任何子类都看不到标记为private的方法,更不用说重写或调用了

决赛

这表明任何带有此方法{}的内容都不能从外部更改。因此,任何标记为final的方法都不能被重写。但是,根据其访问修饰符,可以从其他类调用标记为final的方法。因此,您关于final的陈述也是正确的,但调用部分同样严格地依赖于方法的访问修饰符

最终超高覆盖

private不能在子类等外部类中使用

私有方法是隐式的final,因此不能重写


final方法不总是私有的,所以如果它不是私有的,您可以在子类中访问。

final方法不能被重写。这就是期末考试的全部内容。子类可以或不能调用它们,这取决于它们的可见性修饰符public、private、protected或none。文本是说私有方法是最终的,而不是其他方法。所以,不能重写Final方法,但可以从子类调用它们是一种误解。第二种说法是正确的,你是对的。当时我没有考虑可见性。如果我没记错的话,这本书还谈到了最终的方法优化。我认为,他们之所以将final引入到这个上下文中,是为了表明同样的优化也适用于私有方法。