劉欣
Java中的內(nèi)部類在程序中起著“心臟”的作用,能用此實(shí)現(xiàn)特定的功能,具有非常好的封裝性。使用內(nèi)部類可以很方便地編寫事件驅(qū)動(dòng)程序。本文將結(jié)合簡單實(shí)例內(nèi)部類理解及用法進(jìn)行詳細(xì)描述。
一、內(nèi)部類的定義及分類
內(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)部類
成員內(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ì)象,語法如下:
外部類名:內(nèi)部類名變量名=new外部類名(? )·new內(nèi)部類名(? );然后用對(duì)象訪問內(nèi)類部里的方法。代碼如下:
outter.inner aa=new outter().new inner();
aa.g(? ?);
另外,可在內(nèi)部類里訪問外部類成員方法。
三、靜態(tài)內(nèi)部類
靜態(tài)內(nèi)部類是內(nèi)部類的前面加上了修飾詞static,舉例如下:
public class outter {
void f(? ) {
System.out.println("我是外部類的方法");
new inner(? ?).g(? ?); }
static class inner{? void g(? ) {
System.out.println("我是內(nèi)部類的方法");}}
public static void main(String[] args) {
outter.inner aa=new outter.inner(? ?);
aa.g(? ?); }}
其中inner就是靜態(tài)內(nèi)部。如果想通過外部類去訪問內(nèi)部類,只需要直接創(chuàng)建外部類的對(duì)象去訪問內(nèi)部方法,創(chuàng)建對(duì)象的具體語法格式如下:
外部類名.內(nèi)部類名 對(duì)象名=new 外部類名.內(nèi)部類名();
然后用外部類對(duì)象去訪問內(nèi)部類里的方法。對(duì)應(yīng)上例中的代碼為:
outter.inner aa=new outter.inner();
四、匿名內(nèi)部類
匿名內(nèi)部類顧名思義,就是沒有名字的內(nèi)部類,而且是方法內(nèi)部類。在GUI編程中用得較多,用于實(shí)現(xiàn)每個(gè)組件注冊(cè)了監(jiān)聽事件后,來完成事件的響應(yīng)動(dòng)作。格式為:
方法名(new 接口名(? ?){});
舉例如下:
interface shout{ void fg(); }
public class outter {
public static void main(String[] args) {
fh(new shout(? ?) { public void fg(? ? ) {
System.out.println("匿名內(nèi)部類實(shí)現(xiàn)"); }});}
public static void fh(shout ab) {ab.fg(? ?); }}
五、方法內(nèi)部類
方法內(nèi)部類又叫局部內(nèi)部類,該類位于方法體內(nèi),使用范圍比方法小,比較少用。特別要注意的是方法體內(nèi)不能定義靜態(tài)方法內(nèi)部類。
六、結(jié)語
除了可方便定義外,內(nèi)部類還具有如下特點(diǎn):
1.不為同一包的其他類所見,具有很好的封裝性。
2.使用內(nèi)部類可用于編寫事件驅(qū)動(dòng)程序。
3.匿名內(nèi)部類可以方便的定義運(yùn)行時(shí)回調(diào)。
(責(zé)任編輯? 李 芳)