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

Java語言中4種內(nèi)部類的超詳細(xì)講解

 更新時(shí)間:2023年04月26日 10:49:43   作者:tq02  
這篇文章主要給大家介紹了關(guān)于Java語言中4種內(nèi)部類的超詳細(xì)講解,內(nèi)部類可以分為:實(shí)例內(nèi)部類、靜態(tài)內(nèi)部類和成員內(nèi)部類,每種內(nèi)部類都有它特定的一些特點(diǎn),文中介紹的非常詳細(xì),需要的朋友可以參考下

一.內(nèi)部類的介紹

  內(nèi)部類: 一個(gè)類定義在 另一個(gè)類 的 內(nèi)部。  

     內(nèi)部類分為四種:實(shí)例內(nèi)部類、靜態(tài)內(nèi)部類、局部內(nèi)部類、匿名內(nèi)部類。

使用時(shí)機(jī):當(dāng)一個(gè)事物的內(nèi)部,還需要一個(gè)完整的結(jié)構(gòu)進(jìn)行描述時(shí),而這個(gè)內(nèi)部的完整結(jié)構(gòu)又只為外部事物提供服務(wù),這個(gè)完整結(jié)構(gòu)最好使用內(nèi)部類。(通常 數(shù)據(jù)結(jié)構(gòu) 時(shí)會(huì)使用)

內(nèi)部類代碼實(shí)例: 

public class Person{
       
       class Student{
 
     }
 
}
 //Person是外部類
//Student是內(nèi)部類

 注: 1.定義在class類名外{}花括號(hào)外部的其他類,即使是一個(gè)文件夾,都不能稱為內(nèi)部類。                                          2.內(nèi)部類和外部類共用一個(gè)Java源文件,但是經(jīng)過編譯之后,內(nèi)部類會(huì)形成單獨(dú)的字節(jié)碼文件。        

二.內(nèi)部類的種類

2.1實(shí)例內(nèi)部類      

代碼實(shí)例:

public class Person {
    public int data1=10;
    public int data2=20;
    //實(shí)例內(nèi)部類
    class InnerClass{
        public int data1 = 40;
 
        //public static int data4=60; 無法定義靜態(tài)成員變量
         public static finally int data4=60  //finally修飾,為常量
        public void textInner(){
            System.out.println("textInner");
            System.out.println(this.data1);   //輸出為40;
            System.out.println(Person.this.data1);  //輸出為10;
        }
    }
    public static void main(String[] args) {
        //實(shí)例化內(nèi)部類
        Person kk = new Person();
        Person.InnerClass fw = new Person().new InnerClass();
        fw.textInner();    //輸出結(jié)果為:textInner
        //實(shí)例化內(nèi)部類
        Person.InnerClass fw1 =new Person().new InnerClass();
        fw1.textInner();    //輸出結(jié)果為:textInner
    }
}

 解析:

  1.定義在類當(dāng)中,且不被static修飾的內(nèi)部類。

  2.因?yàn)閟tatic不依賴于對(duì)象,所以無法定義靜態(tài)成員變量

  3.當(dāng)需要實(shí)例化實(shí)例內(nèi)部類時(shí),語法格式為:

           1.  外部類名.內(nèi)部類名  變量名=new  外部類名().new 內(nèi)部類(); 

           2.  外部類名 變量名1=new 外部類名();   

               外部類名.內(nèi)部類名  變量名2=變量名1.new 內(nèi)部類名();

4.當(dāng)內(nèi)部類的變量名和外部類的變量名相同時(shí),優(yōu)先訪問自己的,而想調(diào)用外部類的成員,調(diào)用方法:外部類名.this.同名成員。

5.外部類的任何成員都可以在實(shí)例內(nèi)部類方法中直接訪問。

2.2.靜態(tài)內(nèi)部類

public class Person2 {
    public int data=10;
    private  int data2=20;
 
    //靜態(tài)內(nèi)部類
    static class InnerClass{
        public int data = 40;
 
        //public static int data3=60; 無法定義靜態(tài)成員變量
        public void textInner(){
            System.out.println("textInner");
            System.out.println(data);   //輸出內(nèi)部類的40
            Person2 kk=new Person2();
            System.out.println(kk.data); //輸出外部類的10;
        }
    }
    public static void main(String[] args) {
        //實(shí)例化靜態(tài)內(nèi)部類
        Person2.InnerClass fw1 =new Person2.InnerClass() ;
        fw1.textInner();    //輸出結(jié)果為:textInner
    }
}

 解析 : 

  1.  定義在類當(dāng)中,被static修飾的內(nèi)部類
  2. 當(dāng)需要實(shí)例化靜態(tài)內(nèi)部類時(shí),語法格式為 :外部類名.內(nèi)部類名  變量名=new  外部類名.內(nèi)部類();
  3. 訪問外部變量時(shí),必須先實(shí)例化外部變量的對(duì)象,再進(jìn)行調(diào)用。

2.3局部內(nèi)部類

public class Person3 {
    public int data=10;
    private  int data2=20;
 
  public void textInner(){
    
    //定義局部內(nèi)部類
      class InnerClass{
        int data3=20;
     public void methodInner(){
          System.out.println(data3);
        }
     }
     //實(shí)例化局部內(nèi)部類
        InnerClass fw=new.InnerClass();
         fw. methodInner();
}
 
 
public static void main(String[] args) {
    //方法體
}
 
}

   解析:

   1.在方法當(dāng)中定義的內(nèi)部類。

    2.只能在該方法體內(nèi)部使用,其他位置都不能使用。

    3.也不能被訪問修飾符public、private等修飾

2.4匿名內(nèi)部類

interface Shape{
    void draw();
}
public class Text3 {
    public static void main(String[] args) {
            int area=20;
        new Shape(){
        //需要重寫內(nèi)部方法
           public void draw()
           {
               // area=50; 無法修改,一旦修改無法訪問了。
               System.out.println("正方形面積:"+area);
           }
        }.draw();  //調(diào)用draw();
    }
}

解析:

1.匿名內(nèi)部類與接口有關(guān),匿名一詞便可以知道不需要變量名。
2.語法格式:  new 接口名() {       

                                    //重寫的方法                 

                             }.需要調(diào)用的方法;

3.匿名內(nèi)部類里使用到外部變量時(shí),不可以在匿名內(nèi)部類里修改變量值,會(huì)停止訪問。

總結(jié) 

四種內(nèi)部類,使用最少的是局部內(nèi)部類,并且四種內(nèi)部類有這很大的不同,不同的語法要求,使用限制等等,在數(shù)據(jù)結(jié)構(gòu)的線性表、棧堆等都需要使用,所以我們得熟練掌握。

到此這篇關(guān)于Java語言中4種內(nèi)部類的超詳細(xì)講解的文章就介紹到這了,更多相關(guān)Java內(nèi)部類講解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 教你使用eclipse?搭建Swt?環(huán)境的全過程

    教你使用eclipse?搭建Swt?環(huán)境的全過程

    本文給大家分享使用eclipse?搭建Swt?環(huán)境的全過程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Spring?Boot?3中一套可以直接用于生產(chǎn)環(huán)境的Log4J2日志配置詳解

    Spring?Boot?3中一套可以直接用于生產(chǎn)環(huán)境的Log4J2日志配置詳解

    Log4J2是Apache Log4j的升級(jí)版,參考了logback的一些優(yōu)秀的設(shè)計(jì),并且修復(fù)了一些問題,因此帶來了一些重大的提升,這篇文章主要介紹了Spring?Boot?3中一套可以直接用于生產(chǎn)環(huán)境的Log4J2日志配置,需要的朋友可以參考下
    2023-12-12
  • Springboot mybatis-plus配置及用法詳解

    Springboot mybatis-plus配置及用法詳解

    這篇文章主要介紹了Springboot mybatis-plus配置及用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • java開發(fā)之Jdbc分頁源碼詳解

    java開發(fā)之Jdbc分頁源碼詳解

    這篇文章主要介紹了java開發(fā)之Jdb分頁源碼詳解,需要的朋友可以參考下
    2020-02-02
  • 詳解Java中自定義注解的使用

    詳解Java中自定義注解的使用

    Annontation是Java5開始引入的新特征,中文名稱叫注解,它提供了一種安全的類似注釋的機(jī)制,用來將任何的信息或元數(shù)據(jù)(metadata)與程序元素(類、方法、成員變量等)進(jìn)行關(guān)聯(lián)。本文主要介紹了自定義注解的使用,希望對(duì)大家有所幫助
    2023-03-03
  • Spring創(chuàng)建Bean的生命周期詳析

    Spring創(chuàng)建Bean的生命周期詳析

    這篇文章主要介紹了Spring創(chuàng)建Bean的生命周期詳析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Springboot集成Camunda使用Mysql介紹

    Springboot集成Camunda使用Mysql介紹

    大家好,本篇文章主要講的是Springboot集成Camunda使用Mysql介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 關(guān)于Java中配置ElasticSearch集群環(huán)境賬號(hào)密碼的問題

    關(guān)于Java中配置ElasticSearch集群環(huán)境賬號(hào)密碼的問題

    這篇文章主要介紹了Java中配置ElasticSearch集群環(huán)境賬號(hào)密碼的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • 簡單談?wù)凷pring Ioc原理解析

    簡單談?wù)凷pring Ioc原理解析

    學(xué)習(xí)過Spring框架的人一定都會(huì)聽過Spring的IoC(控制反轉(zhuǎn)) 、DI(依賴注入)這兩個(gè)概念,對(duì)于初學(xué)Spring的人來說,總覺得IoC 、DI這兩個(gè)概念是模糊不清的,是很難理解的,今天和大家分享網(wǎng)上的一些技術(shù)大牛們對(duì)Spring框架的IOC的理解以及談?wù)勎覍?duì)Spring Ioc的理解。
    2018-09-09
  • 詳解springMVC之與json數(shù)據(jù)交互方法

    詳解springMVC之與json數(shù)據(jù)交互方法

    本篇文章主要介紹了詳解springMVC之與json數(shù)據(jù)交互方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05

最新評(píng)論

武宁县| 民丰县| 亳州市| 平阳县| 三原县| 武川县| 保德县| 宜宾市| 西畴县| 卢氏县| 兰西县| 称多县| 加查县| 大荔县| 东方市| 海城市| 乌兰浩特市| 勐海县| 霍山县| 富阳市| 托里县| 邵阳县| 台州市| 邯郸市| 资阳市| 佳木斯市| 醴陵市| 景泰县| 安岳县| 宁明县| 忻州市| 普宁市| 哈巴河县| 鄯善县| 富阳市| 聂拉木县| 双辽市| 陕西省| 白银市| 玛沁县| 绿春县|