Java中靜態內部類詳解

Java中的靜態內部類詳解

  1. 靜態內部類,顧名思義用static修飾的內部類。這個類屬於外部類本身,而不屬於外部類的實例,也稱之爲類內部類。這也是爲什麼外部類不可以用static修飾的原因,因爲一旦被修飾,說明這個類是屬於類而不是屬於實例的。
  2. 靜態內部類遵守靜態成員不能訪問非靜態成員的規則。靜態內部類實例或者方法都只能訪問外部類的靜態成員,不可訪問非靜態實例。
//定義外部類

package com.InnerOuter;

public class Outter_5 {
	public static String s1 = "outer_static_s";
	public String s2 = "outer_s";
	
	public void Opri() {
		//訪問內部類的靜態成員實例
		System.out.println(inner_5.s3);
		//訪問內部類的成員實例
		System.out.println(new inner_5().S4);
	}
	
	public static class inner_5{
		public static String s3 = "inner_static_s";
		public String S4 = "inner_s";
		
		public void pri() {
			//訪問外部靜態成員實例
			System.out.println(Outter_5.s1);
			//System.out.println(Outer_5.s2); 訪問外部成員實例,無法通過編譯
			//訪問外部類成員實例
			System.out.println(new Outter_5().s2);
		}
	}
}

//定義運行類

package com.InnerOuter;

import com.InnerOuter.Outter_5.inner_5;

public class Outter_5Run {

	public static void main(String[] args) {
		Outter_5 o5 = new Outter_5();
		inner_5 i5 = new inner_5();
		
		o5.Opri();
		i5.pri();
	}

}

//測試結果:
/*

inner_static_s
inner_s
outer_static_s
outer_s

*/
  1. 除訪問權限之外,靜態內部類和普通內部類在使用上大同小異,沒有太根本性的區別。
  2. 另外增加一點,在接口中也是可以使用內部類的,但接口中的內部類默認是public static 修飾,也就是說說在接口中,只能使用靜態內部類。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章