Java 訪問許可權 內部類總結
在Java中,可以將一個類定義在另一個類裡面或者一個方法裡邊,這樣的類稱為內部類,廣泛意義上的內部類一般包括四種:成員內部類,區域性內部類,匿名內部類,靜態內部類 。
1.成員內部類
(1)該類像是外部類的一個成員,可以無條件的訪問外部類的所有成員屬性和成員方法(包括private成員和靜態成員);
(2)成員內部類擁有與外部類同名的成員變數時,會發生隱藏現象,即預設情況下訪問的是成員內部類中的成員。如果要訪問外部類中的成員,需要以下形式訪問:【外部類.this.成員變數 或 外部類.this.成員方法】;
(3)在外部類中如果要訪問成員內部類的成員,必須先建立一個成員內部類的物件,再通過指向這個物件的引用來訪問;
(4)成員內部類是依附外部類而存在的,也就是說,如果要建立成員內部類的物件,前提是必須存在一個外部類的物件;
(5)內部類可以擁有private訪問許可權、protected訪問許可權、public訪問許可權及包訪問許可權。如果成員內部類用private修飾,則只能在外部類的內部訪問;如果用public修飾,則任何地方都能訪問;如果用protected修飾,則只能在同一個包下或者繼承外部類的情況下訪問;如果是預設訪問許可權,則只能在同一個包下訪問。外部類只能被public和包訪問兩種許可權修飾。
2.區域性內部類
(1)區域性內部類是定義在一個方法或者一個作用域裡面的類,它和成員內部類的區別在於區域性內部類的訪問僅限於方法內或者該作用域內;
(2)區域性內部類就像是方法裡面的一個區域性變數一樣,是不能有public、protected、private以及static修飾符的;
(3)對於區域性內部類,只有在方法的區域性變數被標記為final或區域性變數是effctively final的,內部類才能使用它們。
3.匿名內部類
(1)一般使用匿名內部類來編寫事件監聽程式碼;
(2)匿名內部類是不能有訪問修飾符和static修飾符的;
(3)匿名內部類是唯一一種沒有構造器的類;
(4)匿名內部類用於繼承其他類或是實現介面,並不需要增加額外的方法,只是對繼承方法的實現或是重寫。
4.內部靜態類
(1)靜態內部類是不需要依賴於外部類的,這點和類的靜態成員屬性有點類似;
(2)不能使用外部類的非static成員變數或者方法。
表示感謝!!!