java - 无法访问同一包中的类成员

标签 java default visibility private jls

假设我有一个带有包可访问成员的基类:

package testcase;

public class B
{
    int b;
}

它有一个子类:

package testcase.sub;

import testcase.B;


public class C
    extends B
{   
    int c;
}

现在我需要从定义该字段的同一包中访问成员字段:

package testcase;

import testcase.sub.C;


public class A
{

    void testcase( C c )
    {
        c.c = 0;             // HINT
        ( (B) c ).b = 1;     // FIRST
        c.b = 2;             // SECOND
    }

}

编辑:我完全理解A无法访问c.c以及为什么标记为 HINT 的行无法编译:C.c仅对同一包中的代码可见,而 C.c在包装中testcase.sub A位于testcase .

但是AB.b均在包装中 testcase那么为什么第一个作业可以编译,而第二个作业却不能编译呢?

最佳答案

C 无权访问 B.bB.b 是包级别权限,B 位于testcase 包,但 C 位于 testcase.sub 包中。它们不是同一个包,因此 C 没有 b 字段。

关于java - 无法访问同一包中的类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36360442/

相关文章:

java - 以编程方式在 Android 中的 Php 服务器上上传图像

java - 尝试理解最终变量

javascript - Java servlet 对 JavaScript 的响应

android - 有没有简单的方法可以在 Android 中为 TextView 创建用户默认值?

c++ - 匿名命名空间 - 在头文件和代码文件中都有意义吗?

wpf - 隐藏 WPF 网格列时的 Gridsplitter 行为

java - 返回多个泛型类时未经检查的转换

android - 以编程方式将默认样式设置回按钮

actionscript-3 - ActionScript – 无类型变量的默认数据类型?

WPF:通过字符串内容绑定(bind)可见性