最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java內(nèi)部類與匿名內(nèi)部類

 更新時(shí)間:2022年06月14日 14:08:00   作者:??共飲一杯無????  
這篇文章主要介紹了Java內(nèi)部類與匿名內(nèi)部類,內(nèi)部類可以直接訪問外部類的成員,包括私有成員。外部類要訪問內(nèi)部類的成員,必須要建立內(nèi)部類的對(duì)象,更多相關(guān)內(nèi)容可以參考下面文章內(nèi)容

一、內(nèi)部類

什么是內(nèi)部類

將一個(gè)類A定義在另一個(gè)類B里面,里面的那個(gè)類A就稱為內(nèi)部類,B則稱為外部類。

成員內(nèi)部類

成員內(nèi)部類 :定義在類中方法外的類。

定義格式:

class 外部類 {
class 內(nèi)部類{
}
}

在描述事物時(shí),若一個(gè)事物內(nèi)部還包含其他事物,就可以使用內(nèi)部類這種結(jié)構(gòu)。比如,電腦類Computer 中包含中央處理器類Cpu ,這時(shí), Cpu 就可以使用內(nèi)部類來描述,定義在成員位置。

代碼舉例:

class Computer { //外部類
    class Cpu { //內(nèi)部類
    }
}

訪問特點(diǎn)

  • 內(nèi)部類可以直接訪問外部類的成員,包括私有成員。
  • 外部類要訪問內(nèi)部類的成員,必須要建立內(nèi)部類的對(duì)象。

創(chuàng)建內(nèi)部類對(duì)象格式:

外部類名.內(nèi)部類名 對(duì)象名 = new 外部類().new 內(nèi)部類();

訪問演示,代碼如下:

定義類:

public class Person {
    private boolean live = true;
    class Heart {
        public void jump() {
            // 直接訪問外部類成員
            if (live) {
                System.out.println("心臟在跳動(dòng)??");
            } else {
                System.out.println("心臟不跳了??");
            }
        }
    }
    public boolean isLive() {
        return live;
    }
    public void setLive(boolean live) {
        this.live = live;
    }
}

定義測試類:

public class InnerDemo {
    public static void main(String[] args) {
        // 創(chuàng)建外部類對(duì)象
        Person p = new Person();
        // 創(chuàng)建內(nèi)部類對(duì)象
        Heart heart = p.new Heart();
        // 調(diào)用內(nèi)部類方法
        heart.jump();
        // 調(diào)用外部類方法
        p.setLive(false);
        // 調(diào)用內(nèi)部類方法
        heart.jump();
    }
}

輸出結(jié)果:

心臟在跳動(dòng)??
心臟不跳了??

??內(nèi)部類仍然是一個(gè)獨(dú)立的類,在編譯之后會(huì)內(nèi)部類會(huì)被編譯成獨(dú)立的.class文件,但是前面冠以外部類的類名和$符號(hào) 。比如,Person$Heart.class

二、匿名內(nèi)部類

匿名內(nèi)部類 :是內(nèi)部類的簡化寫法。它的本質(zhì)是一個(gè)帶具體實(shí)現(xiàn)的父類或者父接口的 匿名的 子類對(duì)象。開發(fā)中,最常用到的內(nèi)部類就是匿名內(nèi)部類了。以接口舉例,當(dāng)你使用一個(gè)接口時(shí),似乎得做如下幾步操作:

  • 定義子類
  • 重寫接口中的方法
  • 創(chuàng)建子類對(duì)象
  • 調(diào)用重寫后的方法

我們的目的,最終只是為了調(diào)用方法,那么能不能簡化一下,把以上四步合成一步呢?匿名內(nèi)部類就是做這樣的快捷方式。

前提

匿名內(nèi)部類必須繼承一個(gè)父類或者實(shí)現(xiàn)一個(gè)父接口。

格式

new 父類名或者接口名(){
// 方法重寫
@Override
public void method() {
// 執(zhí)行語句
}
};

使用方式

以接口為例,匿名內(nèi)部類的使用,代碼如下:

定義接口:

public abstract class FlyAble{
    public abstract void fly();
}

創(chuàng)建匿名內(nèi)部類,并調(diào)用:

public class InnerDemo {
    public static void main(String[] args) {
        /**
        1.等號(hào)右邊:是匿名內(nèi)部類,定義并創(chuàng)建該接口的子類對(duì)象
        2.等號(hào)左邊:是多態(tài)賦值,接口類型引用指向子類對(duì)象
        */
        FlyAble f = new FlyAble(){
            public void fly() {
                System.out.println("蕪湖,起飛!!??????");
            }
        };
        //調(diào)用 fly方法,執(zhí)行重寫后的方法
        f.fly();
    }
}

通常在方法的形式參數(shù)是接口或者抽象類時(shí),也可以將匿名內(nèi)部類作為參數(shù)傳遞。

代碼如下:

public class InnerDemo2 {
    public static void main(String[] args) {
        /**
        1.等號(hào)右邊:是匿名內(nèi)部類,定義并創(chuàng)建該接口的子類對(duì)象
        2.等號(hào)左邊:是多態(tài)賦值,接口類型引用指向子類對(duì)象
        */
        FlyAble f = new FlyAble(){
            public void fly() {
                System.out.println("蕪湖,起飛??!??????");
            }
        };
        // 將f傳遞給showFly方法中
        showFly(f);
    }
    public static void showFly(FlyAble f) {
        f.fly();
    }
}

以上兩步,也可以簡化為一步,代碼如下:

public class InnerDemo3 {
    public static void main(String[] args) {
        /**
        創(chuàng)建匿名內(nèi)部類,直接傳遞給showFly(FlyAble f)
        */
        showFly(new FlyAble(){
            public void fly() {
                System.out.println("蕪湖,起飛?。??????");
            }
        });
    }
    public static void showFly(FlyAble f) {
        f.fly();
    }
}

執(zhí)行輸出如下:

蕪湖,起飛?。??????

到此這篇關(guān)于Java內(nèi)部類與匿名內(nèi)部類的文章就介紹到這了,更多相關(guān)Java匿名內(nèi)部類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序 開發(fā)中遇到問題總結(jié)

    微信小程序 開發(fā)中遇到問題總結(jié)

    這篇文章主要介紹了微信小程序 開發(fā)中遇到問題總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • SpringCloud客戶端的負(fù)載均衡Ribbon的實(shí)現(xiàn)

    SpringCloud客戶端的負(fù)載均衡Ribbon的實(shí)現(xiàn)

    微服務(wù)架構(gòu),不可避免的存在單個(gè)微服務(wù)有多個(gè)實(shí)例,這篇文章主要介紹了SpringCloud客戶端的負(fù)載均衡Ribbon的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • spring boot 不連接數(shù)據(jù)庫啟動(dòng)的解決

    spring boot 不連接數(shù)據(jù)庫啟動(dòng)的解決

    這篇文章主要介紹了spring boot 不連接數(shù)據(jù)庫啟動(dòng)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java創(chuàng)建多級(jí)目錄文件的實(shí)例講解

    java創(chuàng)建多級(jí)目錄文件的實(shí)例講解

    下面小編就為大家分享一篇java創(chuàng)建多級(jí)目錄文件的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 全解史上最快的JOSN解析庫alibaba Fastjson

    全解史上最快的JOSN解析庫alibaba Fastjson

    這篇文章主要介紹了史上最快的JOSN解析庫alibaba Fastjson,對(duì)FastJson感興趣的同學(xué),一定要看一下
    2021-04-04
  • Java并發(fā)編程:volatile關(guān)鍵字詳細(xì)解析

    Java并發(fā)編程:volatile關(guān)鍵字詳細(xì)解析

    這篇文章主要介紹了Java并發(fā)編程:volatile關(guān)鍵字詳細(xì)解析,對(duì)學(xué)習(xí)volatile關(guān)鍵字有一定的認(rèn)識(shí),有需要的可以了解一下。
    2016-11-11
  • org.springframework.dao.OptimisticLockingFailureException樂觀鎖失敗的解決方法

    org.springframework.dao.OptimisticLockingFailureException樂觀鎖

    本文主要介紹了org.springframework.dao.OptimisticLockingFailureException樂觀鎖失敗的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Spring mvc Controller和RestFul原理解析

    Spring mvc Controller和RestFul原理解析

    這篇文章主要介紹了Spring mvc Controller和RestFul原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Spring Bean生命周期之Bean的實(shí)例化詳解

    Spring Bean生命周期之Bean的實(shí)例化詳解

    這篇文章主要為大家詳細(xì)介紹了Spring Bean生命周期之Bean的實(shí)例化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java設(shè)計(jì)模式之java中介者模式詳解

    Java設(shè)計(jì)模式之java中介者模式詳解

    這篇文章主要為大家詳細(xì)介紹了23種設(shè)計(jì)模式之java中介者模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-09-09

最新評(píng)論

从化市| 涿州市| 库尔勒市| 连山| 沅江市| 萨嘎县| 通化市| 兴国县| 申扎县| 汽车| 如东县| 文水县| 浦城县| 东莞市| 安乡县| 寻乌县| 武平县| 肇州县| 龙岩市| 巴彦县| 杭锦旗| 秦安县| 民丰县| 鄂尔多斯市| 会宁县| 麻阳| 稻城县| 湘乡市| 翁牛特旗| 山西省| 兴安县| 衡水市| 堆龙德庆县| 汾西县| 桂林市| 松原市| 涟源市| 保定市| 浠水县| 广河县| 长武县|