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

Java面向?qū)ο笾畠?nèi)部類(lèi)詳解

 更新時(shí)間:2022年10月04日 09:52:16   作者:館主阿牛  
在 Java 中,允許一個(gè)類(lèi)的定義位于另一個(gè)類(lèi)的內(nèi)部,前者稱(chēng)為內(nèi)部類(lèi),后者稱(chēng)為外部類(lèi)。這篇文章將總結(jié)一下內(nèi)部類(lèi)的使用,感興趣的可以了解一下

前言

在 Java 中,允許一個(gè)類(lèi)的定義位于另一個(gè)類(lèi)的內(nèi)部,前者稱(chēng)為內(nèi)部類(lèi),后者稱(chēng)為外部類(lèi)。本篇博客將總結(jié)內(nèi)部類(lèi)的使用。

內(nèi)部類(lèi)概述

當(dāng)一個(gè)事物的內(nèi)部,還有一個(gè)部分需要一個(gè)完整的結(jié)構(gòu)進(jìn)行描述,而這個(gè)內(nèi)部的完整的結(jié)構(gòu)又只為外部事物提供服務(wù),那么整個(gè)內(nèi)部的完整結(jié)構(gòu)最好使用內(nèi)部類(lèi)。

在 Java 中,允許一個(gè)類(lèi)的定義位于另一個(gè)類(lèi)的內(nèi)部,前者稱(chēng)為內(nèi)部類(lèi),后者稱(chēng)為外部類(lèi)。

內(nèi)部類(lèi)一般用在定義它的類(lèi)或語(yǔ)句塊之內(nèi),在外部引用它時(shí)必須給出完整的名稱(chēng)。

內(nèi)部類(lèi)的名字不能與包含它的外部類(lèi)類(lèi)名相同;

內(nèi)部類(lèi)的分類(lèi)

內(nèi)部類(lèi)分為:

成員內(nèi)部類(lèi)( static 成員內(nèi)部類(lèi)和非 static 成員內(nèi)部類(lèi))

局部?jī)?nèi)部類(lèi)(方法內(nèi),代碼塊內(nèi),構(gòu)造器內(nèi))

成員內(nèi)部類(lèi)

一方面,作為外部類(lèi)的成員:

  • 調(diào)用外部類(lèi)的結(jié)構(gòu)。
  • 可以被 static 修飾(注意里面只能調(diào)用靜態(tài)方法,靜態(tài)屬性)。
  • 可以被4種不同的權(quán)限修飾。

另一方面,作為一個(gè)類(lèi):

  • 類(lèi)內(nèi)可以定義屬性、方法、構(gòu)造器等。
  • 可以被final修飾,表示此類(lèi)不能被繼承。
  • 可以被 abstract 修飾。
class People{
    String race;
    String countries;

    //靜態(tài)成員內(nèi)部類(lèi)
    static class Man{
        String name;
        public Man(){
        }
        public void display(){
            System.out.println("3090yyds");
        }

    }

    // 非靜態(tài)成員內(nèi)部類(lèi)
    class Women{
        String name;
        public Women(){
        }
        public void display(){
            System.out.println("化妝");
        }
    }
}

如何實(shí)例化成員內(nèi)部類(lèi)的對(duì)象

package 內(nèi)部類(lèi);

???????public class Demo {
    public static void main(String[] args) {
        //創(chuàng)建Man對(duì)象(靜態(tài)的成員內(nèi)部類(lèi))
        People.Man m = new People.Man();
        m.display();
        //創(chuàng)建Women對(duì)象(非靜態(tài)的成員內(nèi)部類(lèi))
        People p = new People();
        People.Women w = p.new Women();
        w.display();
    }
}

如何在成員內(nèi)部類(lèi)成員中區(qū)分調(diào)用外部類(lèi)的對(duì)象

package 內(nèi)部類(lèi);

public class Demo {
    public static void main(String[] args) {
        //創(chuàng)建Women對(duì)象(非靜態(tài)的成員內(nèi)部類(lèi))
        People p = new People();
        People.Women w = p.new Women();
        w.display("a");
    }
}

class People{
    String name = "niu";
    String countries;
    public void eat(){
        System.out.println("吃飯");
    }
    // 非靜態(tài)成員內(nèi)部類(lèi)
    class Women{
        String name = "aniu";
        public Women(){
        }
        public void eat(){
            System.out.println("吃蔬菜");
        }
        public void display(String name){
            System.out.println("化妝");
            System.out.println(name); //方法的形參
            System.out.println(this.name); //內(nèi)部類(lèi)的屬性
            System.out.println(People.this.name); //外部類(lèi)的屬性
            this.eat(); //內(nèi)部類(lèi)的方法
            People.this.eat(); // 外部類(lèi)的方法
        }
    }
}

局部?jī)?nèi)部類(lèi)

局部?jī)?nèi)部類(lèi)可以在方法內(nèi),代碼塊內(nèi),構(gòu)造器內(nèi)

class Animal{ 
// 局部?jī)?nèi)部類(lèi)
    // 構(gòu)造器內(nèi)
    Animal(){
        class Dog{
            
        }
    }
    
    // 代碼塊內(nèi)
    {
        class Cat{
            
        }
    }
    
    // 方法內(nèi)
    public void method(){
        class Bird{
            
        }
    }
}

開(kāi)發(fā)中局部?jī)?nèi)部類(lèi)的使用

我們?cè)陂_(kāi)發(fā)中局部?jī)?nèi)部類(lèi)使用較多,比如,我們需要一個(gè)方法返回實(shí)現(xiàn)了某個(gè)接口的類(lèi)的對(duì)象,此時(shí)方法內(nèi)自然就需要一個(gè)內(nèi)部類(lèi)實(shí)現(xiàn)接口!

例:

 // 返回一個(gè)實(shí)現(xiàn)了Comparable接口的類(lèi)的對(duì)象
    public Comparable getComparable(){
        // 創(chuàng)建一個(gè)實(shí)現(xiàn)了Comparable接口的類(lèi) ---局部?jī)?nèi)部類(lèi)
        class MyComparable implements Comparable{
            @Override
            public int compareTo(Object o) {
                return 0;
            }
        }
        return new MyComparable();   // 非匿名內(nèi)部類(lèi)的匿名對(duì)象
    }

或者是這樣

 // 返回一個(gè)實(shí)現(xiàn)了Comparable接口的類(lèi)的對(duì)象
    public Comparable getComparable(){     
        return new Comparable() {
            @Override
            public int compareTo(Object o) {
                return 0;
            }
        };  // 匿名內(nèi)部類(lèi)的匿名對(duì)象

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

相關(guān)文章

  • 關(guān)于mybatis resulttype 返回值異常的問(wèn)題

    關(guān)于mybatis resulttype 返回值異常的問(wèn)題

    這篇文章主要介紹了mybatis resulttype 返回值異常的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • springboot配置項(xiàng)目啟動(dòng)后自動(dòng)打開(kāi)瀏覽器訪問(wèn)項(xiàng)目方式

    springboot配置項(xiàng)目啟動(dòng)后自動(dòng)打開(kāi)瀏覽器訪問(wèn)項(xiàng)目方式

    這篇文章主要介紹了springboot配置項(xiàng)目啟動(dòng)后自動(dòng)打開(kāi)瀏覽器訪問(wèn)項(xiàng)目方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Java設(shè)計(jì)模式之靜態(tài)工廠模式詳解

    Java設(shè)計(jì)模式之靜態(tài)工廠模式詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式之靜態(tài)工廠模式,簡(jiǎn)單說(shuō)明了靜態(tài)工廠模式的概念、原理、實(shí)現(xiàn)與使用方法,需要的朋友可以參考下
    2017-09-09
  • Java超詳細(xì)講解三大特性之一的多態(tài)

    Java超詳細(xì)講解三大特性之一的多態(tài)

    多態(tài)就是指程序中定義的引用變量所指向的具體類(lèi)型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量到底會(huì)指向哪個(gè)類(lèi)的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類(lèi)中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定
    2022-05-05
  • java Runnable接口創(chuàng)建線程

    java Runnable接口創(chuàng)建線程

    這篇文章主要介紹了java Runnable接口創(chuàng)建線程的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Springboot整合Mybatispuls的實(shí)例詳解

    Springboot整合Mybatispuls的實(shí)例詳解

    這篇文章主要介紹了Springboot整合Mybatispuls的相關(guān)資料,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 在SpringBoot框架下實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出的方法詳解

    在SpringBoot框架下實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出的方法詳解

    SpringBoot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程,今天我們就使用純前對(duì)按表格控件帶大家了解,如何在Spring Boot框架下實(shí)現(xiàn)Excel服務(wù)端導(dǎo)入導(dǎo)出,需要的朋友可以參考下
    2023-06-06
  • java中帶參數(shù)的try(){}語(yǔ)法含義詳解

    java中帶參數(shù)的try(){}語(yǔ)法含義詳解

    這篇文章主要介紹了java中帶參數(shù)的try(){}語(yǔ)法含義詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java中 Set與Map排序輸出到Writer詳解及實(shí)例

    java中 Set與Map排序輸出到Writer詳解及實(shí)例

    這篇文章主要介紹了 java中 Set與Map排序輸出到Writer詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 詳解java 拼音首字母搜索內(nèi)容功能的示例

    詳解java 拼音首字母搜索內(nèi)容功能的示例

    這篇文章主要介紹了詳解java 拼音首字母搜索內(nèi)容功能的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論

阿拉善右旗| 宝清县| 浠水县| 武安市| 侯马市| 临沭县| 五河县| 海口市| 浠水县| 五大连池市| 汾西县| 锡林浩特市| 阳新县| 海伦市| 桦川县| 吐鲁番市| 宽城| 新泰市| 社旗县| 灵宝市| 邳州市| 浪卡子县| 苏州市| 鄂托克旗| 新巴尔虎左旗| 舒兰市| 佛坪县| 沙田区| 高陵县| 泗洪县| 泸州市| 偏关县| 台南市| 涟水县| 儋州市| 西贡区| 民权县| 镇远县| 鄂托克旗| 新竹市| 洪泽县|