更新時(shí)間:2021-08-11 來(lái)源:黑馬程序員 瀏覽量:
在一個(gè)類中除了可以定義成員變量、成員方法,還可以定義類,這樣的類被稱作成員內(nèi)部類。在成員內(nèi)部類中,可以訪問(wèn)外部類的所有成員,包括成員變量和成員方法;在外部類中,同樣可以訪問(wèn)成員內(nèi)部類的變量和方法。
接下來(lái)通過(guò)一個(gè)案例來(lái)學(xué)習(xí)成員內(nèi)部類的定義和使用,如文件1所示。
文件1 Example18.java
// 定義外部類Outer class Outer { int m = 0; // 定義外部類的成員變量 // 定義外部類成員方法 void test1() { System.out.println("外部類成員方法"); } // 定義成員內(nèi)部類Inner class Inner { int n = 1; // 1、定義內(nèi)部類方法,訪問(wèn)外部類成員變量和方法 void show1() { System.out.println("外部類成員變量m="+m); test1(); } void show2(){ System.out.println("內(nèi)部類成員方法"); } } // 2、定義外部類方法,訪問(wèn)內(nèi)部類變量和方法 void test2() { Inner inner = new Inner(); System.out.println("內(nèi)部類成員變量n="+inner.n); inner.show2(); } } // 定義測(cè)試類 public class Example18 { public static void main(String[] args) { Outer outer = new Outer(); // 創(chuàng)建外部類對(duì)象 Outer.Inner inner = outer.new Inner(); // 創(chuàng)建內(nèi)部類對(duì)象 inner.show1(); // 測(cè)試在成員內(nèi)部類中訪問(wèn)外部類成員變量和方法 outer.test2(); // 測(cè)試在外部類中訪問(wèn)內(nèi)部類成員變量和方法 } }運(yùn)行結(jié)果如圖1所示。
圖1 運(yùn)行結(jié)果
文件1中,定義了一個(gè)外部類Outer,并在該類中定義了成員變量、成員方法和成員內(nèi)部類Inner。在成員內(nèi)部類Inner中,編寫了show1()方法來(lái)測(cè)試內(nèi)部類對(duì)外部類成員變量和方法的調(diào)用;同時(shí)在外部類Outer中,編寫了test2()方法來(lái)測(cè)試外部類對(duì)內(nèi)部類變量和方法的調(diào)用。從圖1可以看出,成員內(nèi)部類可以訪問(wèn)外部類所有成員,同時(shí)外部類也可以訪問(wèn)成員內(nèi)部類的所有成員。
需要注意的是,在文件1中第31行代碼是通過(guò)外部類對(duì)象創(chuàng)建的內(nèi)部類對(duì)象,這樣就可以操作內(nèi)部類中的成員。創(chuàng)建內(nèi)部類對(duì)象的具體語(yǔ)法格式如下:
外部類名.內(nèi)部類名 變量名 = new 外部類名().new 內(nèi)部類名();