1. 程式人生 > >Java內部類例項測試及總結

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

callT2()

{

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();

}

/*************外部類方法*************/

}