■長(zhǎng)沙學(xué)院計(jì)算機(jī)工程與應(yīng)用數(shù)學(xué)學(xué)院 劉 欣
Java 中的內(nèi)部類在程序中起著“心臟”的作用,能用此實(shí)現(xiàn)特定的功能,具有非常好的封裝性。使用內(nèi)部類可以很方便地編寫事件驅(qū)動(dòng)程序。本文將結(jié)合簡(jiǎn)單實(shí)例內(nèi)部類理解及用法進(jìn)行詳細(xì)描述。
內(nèi)部類指的是Java 類體內(nèi)定義的類,也稱為嵌套類。通常類體內(nèi)有屬性與方法兩大部分,有了內(nèi)部類,類體內(nèi)可包括屬性、方法及類三個(gè)部分。內(nèi)部類可分為成員內(nèi)部類、靜態(tài)內(nèi)部類與方法內(nèi)部類,以及一種特殊的匿名內(nèi)部類。下面分別闡述。
成員內(nèi)部類指的是與外部類的屬性、方法并列定義且作為外部類的一個(gè)成員存在的類。比如:
class outter{
void f( ){ //inner bb=new inner(); bb.g();System.out.print(“我是外部類的方法”);}
class inner{ void g( ){
System.out.print(“我是內(nèi)部類的方法”);}}
public static void main(String args[]){outter.inner aa=new outter( ).new inner( );aa.g( );}}
例中inner 是成員內(nèi)部類。若想通過外部類去訪問內(nèi)部類,則需通過外部類對(duì)象創(chuàng)建內(nèi)部類對(duì)象,語(yǔ)法如下:
外部類名:內(nèi)部類名變量名=new 外部類名( )·new 內(nèi)部類名( );然后用對(duì)象訪問內(nèi)類部里的方法。代碼如下:
另外,可在內(nèi)部類里訪問外部類成員方法。
靜態(tài)內(nèi)部類是內(nèi)部類的前面加上了修飾詞static,舉例如下:
其中inner 就是靜態(tài)內(nèi)部。如果想通過外部類去訪問內(nèi)部類,只需要直接創(chuàng)建外部類的對(duì)象去訪問內(nèi)部方法,創(chuàng)建對(duì)象的具體語(yǔ)法格式如下:
外部類名.內(nèi)部類名 對(duì)象名=new 外部類名.內(nèi)部類名();
然后用外部類對(duì)象去訪問內(nèi)部類里的方法。對(duì)應(yīng)上例中的代碼為:
outter.inner aa=new outter.inner();
匿名內(nèi)部類顧名思義,就是沒有名字的內(nèi)部類,而且是方法內(nèi)部類。在GUI 編程中用得較多,用于實(shí)現(xiàn)每個(gè)組件注冊(cè)了監(jiān)聽事件后,來完成事件的響應(yīng)動(dòng)作。格式為:
方法名(new 接口名( ){});
舉例如下:
方法內(nèi)部類又叫局部?jī)?nèi)部類,該類位于方法體內(nèi),使用范圍比方法小,比較少用。特別要注意的是方法體內(nèi)不能定義靜態(tài)方法內(nèi)部類。
除了可方便定義外,內(nèi)部類還具有如下特點(diǎn):
1.不為同一包的其他類所見,具有很好的封裝性。
2.使用內(nèi)部類可用于編寫事件驅(qū)動(dòng)程序。
3.匿名內(nèi)部類可以方便的定義運(yùn)行時(shí)回調(diào)。