首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Java中的私有方法是隐式终结的?

为什么Java中的私有方法是隐式终结的?
EN

Stack Overflow用户
提问于 2014-11-22 14:51:56
回答 3查看 855关注 0票数 2

我想在"Java在一个简单的“一书中指出这几行,这给我带来了一些困惑:

私有方法不是由子类继承的,因此不能被重写(也就是说,所有私有方法都是隐式最终的)。

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

  • 最后的方法不能被覆盖,但是可以从子类调用它们。
  • 私有方法不能被覆盖,也不能从子类中调用它们。

我的陈述正确吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-22 15:02:14

最后的方法不能被覆盖,但是可以从子类调用它们。

这可能是真的,也可能不是,这取决于修饰符,以及重写类的位置。如果该方法是私有的或默认的(没有修饰符),则不能从子类调用该方法,除非您的子类位于同一个包中。

私有方法不能被覆盖,也不能从子类中调用它们。

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

票数 3
EN

Stack Overflow用户

发布于 2014-11-22 15:35:45

在我看来,如果你继续思考这个关键词,它会有所帮助。

私有

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

最终

这说明任何与此方法的{}有关的内容都不能从外部更改。因此,任何标记为final的方法都不能被覆盖。但是,标记为final的方法可以根据其访问修饰符从其他类调用。因此,关于final的语句也是正确的,但是调用部分也严格依赖于方法的访问修饰符。

票数 1
EN

Stack Overflow用户

发布于 2017-02-13 19:15:18

final不能覆盖 private不能在子类等外部类中使用。

private 方法是隐式的最终,因此不能覆盖。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27078702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档