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

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

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

1. 內(nèi)部類

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

1.1 內(nèi)部類概述

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

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

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


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

//在A類中申明了一個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【實例化內(nèi)部類】

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

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

在這里插入圖片描述

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


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

訪問外部類的所有屬性(這里的屬性包括私有的成員變量,方法)
//在A類中申明了一個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) {
        //實例化成員內(nèi)部類分兩步
        //1、實例化外部類
        Outer outObject = new Outer();
        //2、通過外部類調(diào)用內(nèi)部類
        Outer.Inner inObject = outObject.new Inner();
        //測試,調(diào)用內(nèi)部類中的方法
        inObject.in();//打?。哼@是內(nèi)部類方法
        inObject.getId();
        inObject.useOut();
    }
}

在這里插入圖片描述

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

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

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

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

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

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

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

在這里插入圖片描述

說明:

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


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

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

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

相關(guān)文章

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

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

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

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

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

    Java8中利用stream對map集合進行過濾的方法

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

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

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

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

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

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

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

    java使用JWT的方法

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

    Java正確使用訪問修飾符的姿勢

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

    淺談junit4單元測試高級用法

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

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

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

最新評論

嘉义市| 罗定市| 双城市| 上林县| 龙门县| 伊金霍洛旗| 奈曼旗| 金山区| 噶尔县| 额尔古纳市| 西青区| 余庆县| 肃宁县| 泊头市| 沙湾县| 康马县| 舒兰市| 宁都县| 保靖县| 红桥区| 通榆县| 色达县| 乌拉特前旗| 新宁县| 常州市| 延安市| 开江县| 泸定县| 彭泽县| 乐昌市| 丰台区| 杭锦旗| 南木林县| 抚顺市| 本溪市| 邹平县| 济源市| 龙游县| 兖州市| 永济市| 湘阴县|