Java內部類例項測試及總結
這裡沒有講解理論是怎麼樣的,我用例項說明,個人覺得比理論更來得實際,並寫下了測試的總結。
/**
*內部類測試
*@authorhttp://blog.csdn.net/fenglibing
*總結:
*1、可以通過外部類的方法呼叫成員內部類、靜態內部類
*2、內部成員類可以呼叫內部靜態類,但內部靜態不能夠呼叫內總成員類
*3、內部成員類可以呼叫外部類的靜態方法與非靜態方法
*4、靜態內部類不能夠呼叫外部類的非靜態方法、變數
*5、外部類的靜態方法裡可以呼叫內總成員類,不過呼叫方法不是"T1t1=newT1();",而是:
*T1t1=newInnerTest().newT1();
*6、外部類的靜態方法可以直接呼叫內部靜態類
*7、內部靜態類與外部類的靜態方法與間是暢通無阻,內部成員類與外部類所有方法與變數都可以互動(除
*外部靜態方法不能夠直接呼叫內部成員類)
*/
publicclass InnerTest {
staticinta;
InnerTest()
{
new T1();//在外部類的建構函式裡,呼叫內部成類
new T2();
}
/**
*內部成員類
*/
privateclass T1{
T2 t2=new T2();//建立一個內部類,內部類呼叫內部類
T1()
{
a++;//內部成員類可以直接呼叫外總類的靜態變數
//內部成員類可以呼叫外部類的靜態方法與非靜態方法
System.out.println(addLong(1,2));
System.out.println(add(1,2));
}
}
/**
*內部靜態類
*/
staticclass T2{
//內部靜態類不能夠直接呼叫內部成員類
//T1 t1=new T1();
T2()
{
System.out.println(add(1,2));
//靜態內部類不能夠呼叫外部類的非靜態方法、變數
//addLong(1,2);
}
}
/*************外部類方法*************/
long addLong(long a,long b)
{
return a+b;
}
publicstaticint add(int a,int b)
{
return a+b;
}
void
{
new T2();//通過外部類的方法呼叫內部類
}
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
InnerTest it=new InnerTest();
it.callT2();
//靜態方法裡面呼叫內部成員類,不過呼叫方法不是"T1 t1=new T1();",而是如下:
T1 t1=new InnerTest().new T1();
//靜態方法裡面呼叫內部靜態類
T2 t2=new T2();
}
/*************外部類方法*************/
}