您的位置:首页 > 其它

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

2012-07-10 18:45 232 查看
今天在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()

{

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: