靜態內部類:

一、用static修飾的內部類,稱爲靜態內部類,徹底屬於外部類自己,不屬於外部類某一個對象java

二、static關鍵字的做用是把修飾的成員變成類相關,而不是實例相關對象

三、靜態內部類能夠包含靜態成員,也能夠包含非靜態成員blog

四、靜態類內部不能夠訪問外部類的實例成員,只能訪問外部類的類成員,即便是靜態內部類的實例方法也不能訪問外部類的實例成員,只能訪問外部類的靜態成員編譯

五、外部類不能夠定義爲靜態類,Java中靜態類只有一種,那就是靜態內部類,頂級類不能用static 修飾class

public class StaticClassW{
	private int a=5;
	private static int b=10;
	
	private static class StaticClassN{
		public static int c=20;
		public int d=30;
		public static void print(){
			//-下面代碼會報錯,靜態內部類不能訪問外部類實例成員
			//System.out.println(a);

			//-靜態內部類只能夠訪問外部類類成員
			System.out.println(b);
		}

		public void printA(){
			System.out.println(d);
		}
	}

	private static class StaticClassNN{
		public int d=40;

		public void printA(){
			System.out.println(d);
		}
	}

	public static void main(String[] args){
		//-要想訪問靜態內部類的實例成員,需先建立實例對象,才能夠調用,由於實例成員是屬於實例的
		StaticClassN sc=new StaticClassN();
		sc.printA();

		StaticClassNN sc1=new StaticClassNN();
		sc1.printA();
		
		//-訪問靜態內部類的類成員,能夠直接由該類訪問,由於類成員是屬於類的
		StaticClassN.print();
		System.out.println(StaticClassN.c);

		//-要想訪問靜態內部類的實例成員,需先建立實例對象,才能夠調用,由於實例成員是屬於實例的,下面代碼編譯就會報錯
		//StaticClassN.printA();
		
	}
}

 編譯結果:方法

 運行結果:im

注:編譯結果中$1.class爲匿名類static

相關文章
相關標籤/搜索