結論:
1.靜態內部類只能夠訪問外部類的靜態成員,非靜態內部類可以訪問外部類的所有成員。
2.靜態內部類能有靜態成員(方法、屬性),非靜態內部類不能有靜態成員(方法、屬性)。
3.靜態內部類和非靜態內部類在創建時有區別。靜態內部類即使外部類沒有被創建時依然存在。非靜態內部類必須通過外部對象進行調用。
package lx.test;
public class OutClassTest {
int out1=1;
static int out2=1;
void out(){
System.out.println("非靜態");
}
static void outstatic(){
System.out.println("靜態");
}
public class InnerClass{
void InnerClass(){
System.out.println("InnerClass!");
System.out.println(out1);
System.out.println(out2);
out();
outstatic();
}
// static void inner(){} static int i=1; 非靜態內部類不能有靜態成員(方法、屬性)
}
public static class InnerstaticClass{
void InnerstaticClass(){
System.out.println("InnerstaticClass");
// System.out.println(out1);out(); 靜態內部類只能夠訪問外部類的靜態成員
System.out.println(out2);
outstatic();
}
static void innerstatic(){} static int i=1;//靜態內部類能有靜態成員(方法、屬性)
}
public static void main(String args[]){
OutClassTest a=new OutClassTest();
//創建靜態內部類
new OutClassTest.InnerstaticClass().InnerstaticClass();
//創建非靜態內部類
a.new InnerClass().InnerClass();;
}
}