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