■長沙學院計算機工程與應用數學學院 劉 欣
Java 中的內部類在程序中起著“心臟”的作用,能用此實現特定的功能,具有非常好的封裝性。使用內部類可以很方便地編寫事件驅動程序。本文將結合簡單實例內部類理解及用法進行詳細描述。
內部類指的是Java 類體內定義的類,也稱為嵌套類。通常類體內有屬性與方法兩大部分,有了內部類,類體內可包括屬性、方法及類三個部分。內部類可分為成員內部類、靜態內部類與方法內部類,以及一種特殊的匿名內部類。下面分別闡述。
成員內部類指的是與外部類的屬性、方法并列定義且作為外部類的一個成員存在的類。比如:
class outter{
void f( ){ //inner bb=new inner(); bb.g();System.out.print(“我是外部類的方法”);}
class inner{ void g( ){
System.out.print(“我是內部類的方法”);}}
public static void main(String args[]){outter.inner aa=new outter( ).new inner( );aa.g( );}}
例中inner 是成員內部類。若想通過外部類去訪問內部類,則需通過外部類對象創建內部類對象,語法如下:
外部類名:內部類名變量名=new 外部類名( )·new 內部類名( );然后用對象訪問內類部里的方法。代碼如下:

另外,可在內部類里訪問外部類成員方法。
靜態內部類是內部類的前面加上了修飾詞static,舉例如下:


其中inner 就是靜態內部。如果想通過外部類去訪問內部類,只需要直接創建外部類的對象去訪問內部方法,創建對象的具體語法格式如下:
外部類名.內部類名 對象名=new 外部類名.內部類名();
然后用外部類對象去訪問內部類里的方法。對應上例中的代碼為:
outter.inner aa=new outter.inner();
匿名內部類顧名思義,就是沒有名字的內部類,而且是方法內部類。在GUI 編程中用得較多,用于實現每個組件注冊了監聽事件后,來完成事件的響應動作。格式為:
方法名(new 接口名( ){});
舉例如下:

方法內部類又叫局部內部類,該類位于方法體內,使用范圍比方法小,比較少用。特別要注意的是方法體內不能定義靜態方法內部類。
除了可方便定義外,內部類還具有如下特點:
1.不為同一包的其他類所見,具有很好的封裝性。
2.使用內部類可用于編寫事件驅動程序。
3.匿名內部類可以方便的定義運行時回調。