全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

首頁(yè)技術(shù)文章正文

什么是成員內(nèi)部類(lèi)?成員內(nèi)部類(lèi)詳解

更新時(shí)間:2021-08-11 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

在一個(gè)類(lèi)中除了可以定義成員變量、成員方法,還可以定義類(lèi),這樣的類(lèi)被稱(chēng)作成員內(nèi)部類(lèi)。在成員內(nèi)部類(lèi)中,可以訪(fǎng)問(wèn)外部類(lèi)的所有成員,包括成員變量和成員方法;在外部類(lèi)中,同樣可以訪(fǎng)問(wèn)成員內(nèi)部類(lèi)的變量和方法。

接下來(lái)通過(guò)一個(gè)案例來(lái)學(xué)習(xí)成員內(nèi)部類(lèi)的定義和使用,如文件1所示。

文件1 Example18.java

     // 定義外部類(lèi)Outer
     class Outer {
         int m = 0; // 定義外部類(lèi)的成員變量
         // 定義外部類(lèi)成員方法
         void test1() {
             System.out.println("外部類(lèi)成員方法");
         }
         // 定義成員內(nèi)部類(lèi)Inner
        class Inner {
             int n = 1;
             // 1、定義內(nèi)部類(lèi)方法,訪(fǎng)問(wèn)外部類(lèi)成員變量和方法
             void show1() {
                 System.out.println("外部類(lèi)成員變量m="+m);
                 test1();
             }
             void show2(){
                 System.out.println("內(nèi)部類(lèi)成員方法");
             }
         }
         // 2、定義外部類(lèi)方法,訪(fǎng)問(wèn)內(nèi)部類(lèi)變量和方法
         void test2() {
             Inner inner = new Inner();
             System.out.println("內(nèi)部類(lèi)成員變量n="+inner.n);
             inner.show2();
         }
     }
     // 定義測(cè)試類(lèi)
     public class Example18 {
         public static void main(String[] args) {
             Outer outer = new Outer();                // 創(chuàng)建外部類(lèi)對(duì)象
             Outer.Inner inner = outer.new Inner(); // 創(chuàng)建內(nèi)部類(lèi)對(duì)象
             inner.show1();  // 測(cè)試在成員內(nèi)部類(lèi)中訪(fǎng)問(wèn)外部類(lèi)成員變量和方法
             outer.test2(); // 測(cè)試在外部類(lèi)中訪(fǎng)問(wèn)內(nèi)部類(lèi)成員變量和方法
         }
     }
運(yùn)行結(jié)果如圖1所示。

1628665386492_21.jpg

圖1 運(yùn)行結(jié)果

文件1中,定義了一個(gè)外部類(lèi)Outer,并在該類(lèi)中定義了成員變量、成員方法和成員內(nèi)部類(lèi)Inner。在成員內(nèi)部類(lèi)Inner中,編寫(xiě)了show1()方法來(lái)測(cè)試內(nèi)部類(lèi)對(duì)外部類(lèi)成員變量和方法的調(diào)用;同時(shí)在外部類(lèi)Outer中,編寫(xiě)了test2()方法來(lái)測(cè)試外部類(lèi)對(duì)內(nèi)部類(lèi)變量和方法的調(diào)用。從圖1可以看出,成員內(nèi)部類(lèi)可以訪(fǎng)問(wèn)外部類(lèi)所有成員,同時(shí)外部類(lèi)也可以訪(fǎng)問(wèn)成員內(nèi)部類(lèi)的所有成員。

需要注意的是,在文件1中第31行代碼是通過(guò)外部類(lèi)對(duì)象創(chuàng)建的內(nèi)部類(lèi)對(duì)象,這樣就可以操作內(nèi)部類(lèi)中的成員。創(chuàng)建內(nèi)部類(lèi)對(duì)象的具體語(yǔ)法格式如下:

外部類(lèi)名.內(nèi)部類(lèi)名 變量名 = new 外部類(lèi)名().new 內(nèi)部類(lèi)名();






猜你喜歡:

File類(lèi)中常用的構(gòu)造方法【黑馬程序員】

類(lèi)與類(lèi)之間的關(guān)系有哪些?

為什么需要對(duì)類(lèi)進(jìn)行封裝?

黑馬程序員Java開(kāi)發(fā)培訓(xùn)課程

分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!