我尝试了一段程序,然后我才知道我们可以访问默认/包级实例变量。
我想了解为什么在java中允许它。
1
package com.test;
class A {
public int i = 10;
}
2
package com.test;
public class B extends A{
}
3
package com.child;
import com.test.B;
public class C extends B{
public int getI(){
return this.i;
}
public static void main(String[] args) {
System.out.println(new C().getI());
}
}
我能够成功运行此程序。我想要了解的是如何从另一个packkage访问默认访问变量。
答案 0 :(得分:2)
因为它延伸了B,它延伸了A。
答案 1 :(得分:0)
B继承了A的所有公共成员,无论A自己的可见性如何。这也是C看到会员的原因。
这当然令人困惑。根本问题是公共类扩展了非公共类。也许语言应该禁止。
答案 2 :(得分:-1)
有4种不同的访问级别:public,private,protected和package-private。公众对一切都是可见的,甚至是外包装。私有只在课堂内可见。受保护对于类和所有类都是可见的,这扩展了它。 Package-private是默认的(当你没有指定任何其他的时),并且它对一个包中的所有类都是可见的,其中变量被初始化