java - 即使没有 protected ,类如何访问其父类(super class)变量?

标签 java package visibility private

给定示例代码:

package com.tt;
class Bigger 
{
     int a = 5;
}

class lower extends Bigger 
{
    void m1() {
        int z = super.a;
    }
}

为什么下级可以访问更大级的变量,即使它们没有受到保护? 我指的是这个可见性矩阵

访问修饰符:

         Same Class  Same Package   Subclass   Other packages
public          Y       Y              Y             Y               
protected       Y       Y              Y             N
Default         Y       Y              N             N
private         Y       N              N             N

最佳答案

派生类 lower 可以访问父类(super class)型 Bigger 上的字段 a 因为字段 'a' 的范围设置为默认范围,包私有(private)。在这种情况下,继承关系对字段的访问没有任何影响。

当没有为字段声明提供范围时,该字段的访问级别默认为包私有(private)。这是 Bigger 类中字段 a 的当前情况。这将授予同一包内的类,例如 lower 对该字段的访问权限。

在您的表中,该字段属于此访问级别:

         Same Class  Same Package   Subclass   Other packages
public          Y       Y              Y             Y               
protected       Y       Y              Y             N
Default         Y       Y <-- Here     N             N
private         Y       N              N             N

关于java - 即使没有 protected ,类如何访问其父类(super class)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17829981/

相关文章:

java - 如何将包含 "include"部分的 Asciidoc 文档编译为单个 adoc 文件

java - 对于远程过程调用,是否有比 Apacher River (Jini) 更好的技术?

java - Play Framework 中子项目类中的包名称(命名空间)

c# - 通过复选框更改一个项目控件的可见性

java - <<=运算符在Java中是什么意思?

package - 我可以制作一个包含多个可以独立导入的模块的 Julia 包吗?

java - 哪个 Java 包包含高等数学函数?

在 subview 上调用 setVisibility(View.VISIBLE) 后,Android ScrollView 滚动到顶部

c# - WPF ComboBox 项目在 Visibility.Collapsed 之后保留在列表中

java - Joda Time ,DateTimeFormatter