一、用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