Java 访问修饰符 - Public function/variable in protected class

Java Access Modifiers - Public function/variable in protected class

美好的一天,

如果我有一个 class 有点像这样:

public class A {
        protected class B {
                public int element;
                public int get() {
                        return i;
        }
}
public class C {
        foo();
}
public class D extends A {
        foo();
}

1.Could class C 中的 foo(),访问元素和 get()?或者只能 class D 访问它们?

  1. 如果class B 是私有的,C 可以访问元素和 get() 吗?

只有D,classB被保护,那么C无法访问classB。

但是,你必须在D中实例化B才能调用get()得到i,因为get是一个实例方法。

如果 B 是私有的,则 C 和 D 都不能访问 B。