当遇到类A的内部类B时,内部类B中private,protected 这些关键字对类A将不再起任何保护作用


今天在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()
{
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章