今天在Android的开发环境中做了一个测试, 类A中加了一个内部类B, B类中有private, protected, public等属性和方法,结果在类A中的public 方法中访问类B中的所有成员都没报错,很是诧异。
按照我的理解,起码类B中的所有private成员不能被类A访问,结果类A不仅访问了,而且没报任何错误。
后来想了一下,java中每个.java文件中只能有一个类,而且类的名字需同文件名字相同,而private,protected关键字应该只是在不同文件、不同包间起保护作用,而在在同一文件的同一类中是没有限制的, 因为B类在A.java 的A类中,所以B中的所有成员对A类来讲都是透明可见的,无论其属性是public, 还是protected,private。
public class A{
public void methodA(){
B class_b = new B();
class_b.b1 = 0;
class_b.b2 = 0;
class_b.methodB1();
class_b.methodB2();
//以上编译、调用全部通过且无错
}private class B {
private int b1;
protected int b2;
public int b3;
private void methodB1()
{
}
protected void methodB2()
{
}
public void B3()
{
}
}