1 相同點
使用的時候,import的時候,除了包名,還要帶外部類。
2 不同點
2.1 對象創建的方式不同
靜態內部類創建對象的時候,獨立於外部類及其對象,就好像它是一個獨立的類,可以和外部類一樣使用。
內部類創建對象的時候,不能獨立於外部類,必須要先創建外部類的對象,然后再用這個對象來new出內部類的對象。
2.2 內部類不可以有非常量的靜態成員
原因很簡單,靜態成員可以不依賴於對象使用,如果內部類有靜態成員的話,就相當於外部類對象直接調用內部類的靜態成員,一個是對象,一個是類,不倫不類的。
所以,要給內部類的定義靜態成員,必須要使用靜態內部類。
報錯
The field instance cannot be declared static in a non-static inner type, unless initialized with a constant expression
就算是內部類用了靜態的常量,也沒有什么用,在外面也不能脫離了內部類對象訪問。