【问题标题】:does declaring a variable as private show any difference from declaring it as final while inheritance将变量声明为私有是否与在继承时将其声明为最终变量有任何区别
【发布时间】:2018-12-29 17:33:54
【问题描述】:

编辑:很抱歉给您带来不便,这是对这个概念的理解不足。你可以直接忽略这个问题。

我很确定我们既不能继承最终变量也不能继承私有变量。但是,为什么我们在声明它们为私有时要声明它们为final,可以阻止它们继承。

我什至知道 final 变量的值不能被基类或派生类改变。我想推断的是,将变量声明为私有变量还是最终变量在继承时是否真的显示出任何差异。

PS:我无法从互联网上得到任何澄清。每个来源都分别解释它们,即使它们在继承它们时都表现出几乎相同的行为。

【问题讨论】:

  • 你不需要“互联网”来给你答案:声明一个带有私有字段和最终字段的类;然后声明一个子类,看看这两个字段哪个是继承的。
  • privatefinal 是两个完全不同的东西,可访问性和可写性。因此,将变量设为私有表示它仅在该确切类中使用。而将其设为最终版本只是将其设置为只读。 TBH 我不明白你的问题

标签: java access-specifier


【解决方案1】:

我很确定我们既不能继承最终变量也不能继承私有变量

这适用于 private 字段,不适用于 final 字段。最终字段继承(即非私有字段)。是否可以修改与继承无关。

关于继承,final 对于继承的方法final 方法不能被覆盖)和类的继承能力(final 类不能被扩展)。

为什么我们要把变量声明为final,而将它们声明为私有可以阻止它们继承。

出于不同的原因,您将变量声明为finalprivate 封装了该字段,而 final 使其无法重新分配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 2015-09-04
    • 2012-02-13
    • 2011-04-04
    • 1970-01-01
    • 2015-03-29
    • 2012-11-14
    • 1970-01-01
    相关资源
    最近更新 更多