調(diào)用內(nèi)部類的兩種方式

class Outter {
    private int a = 10;

    class Innner {
        public void show() {
            System.out.println(a);
        }
    }

    public void show1() {
        Innner o = new Innner();
        o.show();
    }
}

class Demo1 {
    public static void main(String[] args) {
        Outter o = new Outter();
        o.show1();
    }
}

內(nèi)部類就是嵌套在外部類里面的一個(gè)類,上面代碼通過(guò)外部類的方法來(lái)創(chuàng)建內(nèi)部類對(duì)象內(nèi)部類對(duì)象進(jìn)行調(diào)用自己的方法,然后通過(guò)創(chuàng)建外部類對(duì)象來(lái)實(shí)現(xiàn)對(duì)內(nèi)部類的方法的調(diào)用。

class Outter {
    private int a = 10;

    class Innner {
        public void show() {
            System.out.println(a);
        }
    }

}

class Demo1 {
    public static void main(String[] args) {
        Outter.Innner o = new Outter().new Innner();
        o.show();
    }
}

這種調(diào)用內(nèi)部類來(lái)的更爽快一點(diǎn),直接調(diào)用。

私有化內(nèi)部類。

有人會(huì)問(wèn),既然第二種方式這么爽,為什么還會(huì)有第一種方式?
當(dāng)你的內(nèi)部類的方法是私有時(shí),你可以定義成私有內(nèi)部類,私有的你就無(wú)法訪問(wèn),你直接創(chuàng)建內(nèi)部類訪問(wèn)它就沒(méi)有任何意義,所以你可以使用第一種方式來(lái)實(shí)現(xiàn)。

class Outter {

    private class Innner {
        public void cut() {
            System.out.println("切除你的心臟");
        }
    }

    public void right(String a) {
        if (a == "這是壞蛋的心臟") {
            Innner i = new Innner();
            i.cut();
        }
    }
}

class Demo1 {
    public static void main(String[] args) {
        Outter o = new Outter();
        o.right("這是壞蛋的心臟");
    }
}

一般的內(nèi)部類(成員內(nèi)部類)可以訪問(wèn)外部類的私有變量,但不能訪問(wèn)靜態(tài)的變量要想訪問(wèn)只能再加個(gè)final

靜態(tài)內(nèi)部類里只能存在靜態(tài)變量,直接調(diào)用靜態(tài)內(nèi)部類的形式會(huì)發(fā)生變化:
Outter.Innner o = new Outter.new Innner();

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容