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

Java面向?qū)ο笾畠?nèi)部類案例講解

 更新時(shí)間:2021年08月05日 09:11:11   作者:Z && Y  
這篇文章主要介紹了Java面向?qū)ο笾畠?nèi)部類案例講解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

1. 內(nèi)部類

很多時(shí)候我們創(chuàng)建類的對(duì)象的時(shí)候并不需要使用很多次,每次只使用一次,這個(gè)時(shí)候我們就可以使用內(nèi)部類了

1.1 內(nèi)部類概述

  • 內(nèi)部類就是在一個(gè)類的內(nèi)部在定義一個(gè)類,比如,A類中定義一個(gè)B類,那么B類相對(duì)A類來說就稱為內(nèi)部類,而A類相對(duì)B類來說就是外部類了。
  • 內(nèi)部類不是在一個(gè)java源文件中編寫倆個(gè)平行的倆個(gè)類,而是在一個(gè)類的內(nèi)部再定義另外一個(gè)類。 我可以把外邊的類稱為外部類,在其內(nèi)部編寫的類稱為內(nèi)部類。
  • 內(nèi)部類分為四種:
    • 成員內(nèi)部類
    • 靜態(tài)內(nèi)部類
    • 局部?jī)?nèi)部類
    • 匿名內(nèi)部類

1.2 成員內(nèi)部類(實(shí)例內(nèi)部類、非靜態(tài)內(nèi)部類)

注:成員內(nèi)部類中不能寫靜態(tài)屬性和方法


1.2.1 【定義一個(gè)內(nèi)部類】

//在A類中申明了一個(gè)B類,此B類就在A的內(nèi)部,并且在成員變量的位置上,所以就稱為成員內(nèi)部類
public class Outer {
    private int id;

    class Inner {
        public void in() {
            System.out.println("這是內(nèi)部類方法");
        }
    }

    public void out() {
        System.out.println("這是外部類方法");
    }
}

1.2.2【實(shí)例化內(nèi)部類】

實(shí)例化內(nèi)部類,首先需要實(shí)例化外部類,通過外部類去調(diào)用內(nèi)部類

// 代碼接上
class Test {
    public static void main(String[] args) {
        //實(shí)例化成員內(nèi)部類分兩步
        //1、實(shí)例化外部類
        Outer outObject = new Outer();
        //2、通過外部類調(diào)用內(nèi)部類
        Outer.Inner inObject = outObject.new Inner();
        //測(cè)試,調(diào)用內(nèi)部類中的方法
        inObject.in();//打?。哼@是內(nèi)部類方法
    }
}

在這里插入圖片描述

分析:
想想如果你要使用一個(gè)類中方法或者屬性,你就必須要先有該類的一個(gè)對(duì)象,同理,一個(gè)類在另一個(gè)類的內(nèi)部,那么想要使用這個(gè)內(nèi)部類,就必須先要有外部類的一個(gè)實(shí)例對(duì)象,然后在通過該對(duì)象去使用內(nèi)部類。


1.2.3 【成員內(nèi)部類能干什么?】

訪問外部類的所有屬性(這里的屬性包括私有的成員變量,方法)
//在A類中申明了一個(gè)B類,此B類就在A的內(nèi)部,并且在成員變量的位置上,所以就稱為成員內(nèi)部類
public class Outer {
    private String id = "11923020124";

    class Inner {
        public void in() {
            System.out.println("這是內(nèi)部類方法");
        }

        //內(nèi)部類訪問外部類私有的成員變量
        public void getId() {
            System.out.println("id: " + id);
        }

        public void useOut() {
            out();
        }
    }

    public void out() {
        System.out.println("這是外部類方法");
    }
}

class Test {


    public static void main(String[] args) {
        //實(shí)例化成員內(nèi)部類分兩步
        //1、實(shí)例化外部類
        Outer outObject = new Outer();
        //2、通過外部類調(diào)用內(nèi)部類
        Outer.Inner inObject = outObject.new Inner();
        //測(cè)試,調(diào)用內(nèi)部類中的方法
        inObject.in();//打印:這是內(nèi)部類方法
        inObject.getId();
        inObject.useOut();
    }
}

在這里插入圖片描述

如果內(nèi)部類中的變量名和外部類的成員變量名一樣,要通過創(chuàng)建外部類對(duì)象 "."屬性來訪問外部類屬性,通過this.屬性訪問內(nèi)部類成員屬性

//在A類中申明了一個(gè)B類,此B類就在A的內(nèi)部,并且在成員變量的位置上,所以就稱為成員內(nèi)部類
public class Outer {
    private String id = "Outer Id";

    class Inner {
        private String id = "Inner Id"; //這個(gè)id跟外部類的屬性id名稱一樣。

        public void getInnerId() {
            System.out.println(id);//輸出Inner Id,內(nèi)部類中的變量會(huì)暫時(shí)將外部類的成員變量給隱藏
        }

        public void getOuterId() {
            System.out.println(Outer.this.id);//輸出Outer Id,內(nèi)部類中的變量會(huì)暫時(shí)將外部類的成員變量給隱藏
        }
    }

    public void out() {
        System.out.println("這是外部類方法");
    }
}

class Test {
    public static void main(String[] args) {
        //實(shí)例化成員內(nèi)部類分兩步
        //1、實(shí)例化外部類
        Outer outObject = new Outer();
        //2、通過外部類調(diào)用內(nèi)部類
        Outer.Inner inObject = outObject.new Inner();
        //測(cè)試,調(diào)用內(nèi)部類中的方法
        inObject.getInnerId();
        inObject.getOuterId();
    }
}

在這里插入圖片描述

說明:

如何調(diào)用外部類的成員變量呢?通過Outer.this,因?yàn)槿绻雽?shí)例化內(nèi)部類對(duì)象,就必須通過外部類對(duì)象,當(dāng)外部類對(duì)象new出內(nèi)部類對(duì)象時(shí),會(huì)把自己(外部類對(duì)象)的引用傳到了內(nèi)部類中,所以內(nèi)部類就可以通過Outer.this來訪問外部類的屬性和方法,到這里,你也就可以知道為什么內(nèi)部類可以訪問外部類 的屬性和方法,這里由于有兩個(gè)相同的屬性名稱,所以需要顯示的用Outer.this來調(diào)用外部類的屬性,平常如果屬性名 不重復(fù),那么我們?cè)趦?nèi)部類中調(diào)用外部類的屬性和方法時(shí),前面就隱式的調(diào)用了Outer.this。


1.2.4 借助成員內(nèi)部類,來總結(jié)內(nèi)部類(包括4種內(nèi)部類)的通用用法:

  • 要想訪問內(nèi)部類中的內(nèi)容,必須通過外部類對(duì)象來實(shí)例化內(nèi)部類。
  • 能夠訪問外部類所有的屬性和方法,原理就是在通過外部類對(duì)象實(shí)例化內(nèi)部類對(duì)象時(shí),外部類對(duì)象把自己的引用傳進(jìn)了內(nèi)部類,使內(nèi)部類可以用通過Outer.this去調(diào)用外部類的屬性和方法,一般都是隱式調(diào)用了,但是當(dāng)內(nèi)部類中有屬性或者方法名和外部類中的屬性或方法名相同的時(shí)候,就需要通過顯式調(diào)用Outer.this了。

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

相關(guān)文章

  • 詳解java中Reference的實(shí)現(xiàn)與相應(yīng)的執(zhí)行過程

    詳解java中Reference的實(shí)現(xiàn)與相應(yīng)的執(zhí)行過程

    不知道大家知不知道特殊的reference對(duì)象都是被jvm專門處理的,所以這篇文章就相應(yīng)的工作流程和referencequeue之間的協(xié)作進(jìn)行梳理.有需要的朋友們可以參考借鑒。
    2016-09-09
  • Java編程中的檢查型異常與非檢查型異常分析

    Java編程中的檢查型異常與非檢查型異常分析

    這篇文章主要介紹了Java編程中的未檢查型異常與非檢查型異常,以及異常的處理方式,需要的朋友可以參考下
    2017-09-09
  • Java8中利用stream對(duì)map集合進(jìn)行過濾的方法

    Java8中利用stream對(duì)map集合進(jìn)行過濾的方法

    這篇文章主要給大家介紹了關(guān)于Java8中利用stream對(duì)map集合進(jìn)行過濾的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • SpringBoot3實(shí)戰(zhàn)教程之實(shí)現(xiàn)接口簽名驗(yàn)證功能

    SpringBoot3實(shí)戰(zhàn)教程之實(shí)現(xiàn)接口簽名驗(yàn)證功能

    接口簽名是一種重要的安全機(jī)制,用于確保 API 請(qǐng)求的真實(shí)性、數(shù)據(jù)的完整性以及防止重放攻擊,這篇文章主要介紹了SpringBoot3實(shí)戰(zhàn)教程之實(shí)現(xiàn)接口簽名驗(yàn)證功能,需要的朋友可以參考下
    2025-04-04
  • SWT(JFace) 簡(jiǎn)易瀏覽器 制作實(shí)現(xiàn)代碼

    SWT(JFace) 簡(jiǎn)易瀏覽器 制作實(shí)現(xiàn)代碼

    SWT(JFace) 簡(jiǎn)易瀏覽器 制作實(shí)現(xiàn)代碼
    2009-06-06
  • ZooKeeper入門教程三分布式鎖實(shí)現(xiàn)及完整運(yùn)行源碼

    ZooKeeper入門教程三分布式鎖實(shí)現(xiàn)及完整運(yùn)行源碼

    本文是ZooKeeper入門系列教程,分布式鎖有多種實(shí)現(xiàn)方式,比如通過數(shù)據(jù)庫(kù)、redis都可實(shí)現(xiàn)。作為分布式協(xié)同工具ZooKeeper,當(dāng)然也有著標(biāo)準(zhǔn)的實(shí)現(xiàn)方式。本文介紹在zookeeper中如何實(shí)現(xiàn)排他鎖
    2022-01-01
  • java使用JWT的方法

    java使用JWT的方法

    這篇文章主要介紹了java使用JWT的方法,JWT是token的一種,一個(gè)JWT字符串包含三個(gè)部分分別是Header、Payload和Signature,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Java正確使用訪問修飾符的姿勢(shì)

    Java正確使用訪問修飾符的姿勢(shì)

    訪問修飾符是Java語(yǔ)法中很基礎(chǔ)的一部分,但是能正確的使用Java訪問修飾符的程序員只在少數(shù),下面這篇文章主要給大家介紹了關(guān)于Java正確使用訪問修飾符的姿勢(shì),需要的朋友可以參考下
    2021-11-11
  • 淺談junit4單元測(cè)試高級(jí)用法

    淺談junit4單元測(cè)試高級(jí)用法

    這篇文章主要介紹了淺談junit4單元測(cè)試高級(jí)用法,小編覺得挺不錯(cuò)的,在這里分享給大家,需要的朋友可以參考下。
    2017-10-10
  • Java基礎(chǔ)元注解基本原理示例詳解

    Java基礎(chǔ)元注解基本原理示例詳解

    這篇文章主要為大家介紹了Java基礎(chǔ)元注解基本原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01

最新評(píng)論

庄浪县| 阿鲁科尔沁旗| 平阳县| 屏山县| 泰顺县| 调兵山市| 绵阳市| 鄄城县| 沙坪坝区| 久治县| 尉犁县| 安龙县| 纳雍县| 工布江达县| 黔南| 贵德县| 沂南县| 通州市| 叶城县| 平江县| 扎兰屯市| 丁青县| 韶山市| 新巴尔虎左旗| 辽源市| 衡山县| 皮山县| 张家港市| 西城区| 正阳县| 北海市| 娄烦县| 东乡县| 定边县| 旌德县| 剑河县| 镇赉县| 上犹县| 玉环县| 澄迈县| 射洪县|