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

Java中內(nèi)部類使用方法實(shí)戰(zhàn)案例分析

 更新時(shí)間:2019年09月26日 11:25:59   作者:cakincqm  
這篇文章主要介紹了Java中內(nèi)部類使用方法,結(jié)合具體案例形式分析了Java內(nèi)部類原理、調(diào)用方法及相關(guān)使用注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Java中內(nèi)部類使用方法。分享給大家供大家參考,具體如下:

一 點(diǎn)睛

分三種情況討論內(nèi)部類的使用:

1 在外部類內(nèi)部使用內(nèi)部類

2 在外部類以外使用非靜態(tài)內(nèi)部類

3 在外部類以外使用靜態(tài)內(nèi)部類

二 在外部類內(nèi)部使用內(nèi)部類

可以直接通過(guò)內(nèi)部類的類名來(lái)定義變量,通過(guò)new調(diào)用內(nèi)部構(gòu)造器來(lái)創(chuàng)建實(shí)例。

不要在外部類的靜態(tài)成員(包括靜態(tài)方法和靜態(tài)初始化塊)中使用非靜態(tài)內(nèi)部類,因?yàn)殪o態(tài)成員不能訪問(wèn)非靜態(tài)成員。

三 在外部類以外使用非靜態(tài)內(nèi)部類

1 點(diǎn)睛

private 修飾的內(nèi)部類只能在外部類內(nèi)部使用。所以要在外部類以外地方使用非靜態(tài)內(nèi)部類,必須使用其他修飾符。

省略訪問(wèn)控制符的內(nèi)部類:只能被與外部類處于同一個(gè)包中的其他類所訪問(wèn)。

使用protected修飾的內(nèi)部類:可被與外部類處于同一個(gè)包的其他類和外部類的子類所訪問(wèn)。

使用public修飾的內(nèi)部類:可被任意地方訪問(wèn)。

在外部類以外的地方定義內(nèi)部類(包括靜態(tài)和非靜態(tài)兩種)變量語(yǔ)法格式如下:

OuterClass.InnerClass varName

內(nèi)部類完整類名應(yīng)該是OuterClass.InnerClass。如果外部類有包名,則應(yīng)該增加包名前綴

在外部類以外的地方使用非靜態(tài)內(nèi)部類創(chuàng)建對(duì)象的語(yǔ)法如下:

OuterInstance.new InnerConstructor()

2 代碼

CreateInnerInstance.java

class Out
{
  // 定義一個(gè)內(nèi)部類,不使用訪問(wèn)控制符,
  // 即只有同一個(gè)包中其他類可訪問(wèn)該內(nèi)部類
  class In
  {
   public In(String msg)
   {
     System.out.println(msg);
   }
  }
}
public class CreateInnerInstance
{
  public static void main(String[] args)
  {
   Out.In in = new Out().new In("測(cè)試信息");
   /*
   上面代碼可改為如下三行代碼:
   使用OutterClass.InnerClass的形式定義內(nèi)部類變量
   Out.In in;
   創(chuàng)建外部類實(shí)例,非靜態(tài)內(nèi)部類實(shí)例將寄存在該實(shí)例中
   Out out = new Out();
   通過(guò)外部類實(shí)例和new來(lái)調(diào)用內(nèi)部類構(gòu)造器創(chuàng)建非靜態(tài)內(nèi)部類實(shí)例
   in = out.new In("測(cè)試信息");
   */
  }
}

3 運(yùn)行

測(cè)試信息

4 代碼

SubClass.java

public class SubClass extends Out.In
{
  //顯示定義SubClass的構(gòu)造器
  public SubClass(Out out)
  {
   //通過(guò)傳入的Out對(duì)象顯式調(diào)用In的構(gòu)造器
   out.super("hello");
  }
}

CreateInnerInstance.java

class Out
{
  // 定義一個(gè)內(nèi)部類,不使用訪問(wèn)控制符,
  // 即只有同一個(gè)包中其他類可訪問(wèn)該內(nèi)部類
  class In
  {
   public In(String msg)
   {
     System.out.println(msg);
   }
  }
}
public class CreateInnerInstance
{
  public static void main(String[] args)
  {
   Out.In in = new Out().new In("測(cè)試信息");
   /*
   上面代碼可改為如下三行代碼:
   使用OutterClass.InnerClass的形式定義內(nèi)部類變量
   Out.In in;
   創(chuàng)建外部類實(shí)例,非靜態(tài)內(nèi)部類實(shí)例將寄存在該實(shí)例中
   Out out = new Out();
   通過(guò)外部類實(shí)例和new來(lái)調(diào)用內(nèi)部類構(gòu)造器創(chuàng)建非靜態(tài)內(nèi)部類實(shí)例
   in = out.new In("測(cè)試信息");
   */
 
   SubClass subclass = new SubClass(new Out());
  }
}

5 運(yùn)行

測(cè)試信息
hello

6 說(shuō)明

非靜態(tài)內(nèi)部類In對(duì)象和SubClass對(duì)象都必須持有指向Outer對(duì)象的引用,區(qū)別是創(chuàng)建兩種對(duì)象時(shí)傳入Out對(duì)象的方式不同:當(dāng)創(chuàng)建非靜態(tài)內(nèi)部類In類的對(duì)象時(shí),必須通過(guò)Outer對(duì)象來(lái)調(diào)用new關(guān)鍵字,當(dāng)創(chuàng)建SubClass類的對(duì)象時(shí),必須使用Outer對(duì)象作為調(diào)用者來(lái)調(diào)用In類的構(gòu)造器。

非靜態(tài)內(nèi)部類的子類不一定是內(nèi)部類,它可以是一個(gè)外部類。但非靜態(tài)內(nèi)部類的子類實(shí)例一樣需要保留一個(gè)引用,該引用指向其父類所在外部類的對(duì)象。也就是說(shuō),如果有一個(gè)內(nèi)部類子類的對(duì)象存在,則一定存在與之對(duì)應(yīng)的外部類對(duì)象。

四 在外部類以外使用靜態(tài)內(nèi)部類

1 點(diǎn)睛

在外部類以外的地方使用靜態(tài)內(nèi)部類創(chuàng)建對(duì)象的語(yǔ)法如下:

new OuterClass.InnerConstructer();

2 代碼

class StaticOut
{
  // 定義一個(gè)靜態(tài)內(nèi)部類,不使用訪問(wèn)控制符,
  // 即同一個(gè)包中其他類可訪問(wèn)該內(nèi)部類
  static class StaticIn
  {
   public StaticIn()
   {
     System.out.println("靜態(tài)內(nèi)部類的構(gòu)造器");
   }
  }
}
public class CreateStaticInnerInstance
{
  public static void main(String[] args)
  {
   StaticOut.StaticIn in = new StaticOut.StaticIn();
   /*
   上面代碼可改為如下兩行代碼:
   使用OutterClass.InnerClass的形式定義內(nèi)部類變量
   StaticOut.StaticIn in;
   通過(guò)new來(lái)調(diào)用內(nèi)部類構(gòu)造器創(chuàng)建靜態(tài)內(nèi)部類實(shí)例
   in = new StaticOut.StaticIn();
   */
  }
}

3 運(yùn)行

靜態(tài)內(nèi)部類的構(gòu)造器

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • IDEA運(yùn)行java程序時(shí)總彈出提示配置Edit Configurations問(wèn)題

    IDEA運(yùn)行java程序時(shí)總彈出提示配置Edit Configurations問(wèn)題

    更新IDEA后,運(yùn)行Java程序時(shí)可能需要手動(dòng)配置JDK版本,通過(guò)統(tǒng)一設(shè)置默認(rèn)JDK可以解決每次彈出EditConfigurations的問(wèn)題,此操作可以簡(jiǎn)化開(kāi)發(fā)流程,提高效率
    2024-09-09
  • SpringBoot利用jackson格式化時(shí)間的三種方法

    SpringBoot利用jackson格式化時(shí)間的三種方法

    日常開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)使用json進(jìn)行數(shù)據(jù)的傳輸,這就涉及到了對(duì)象和json的相互轉(zhuǎn)化,常用的解決方案有:Jackson(推薦)、谷歌的Gson、阿里的Fastjson,這篇文章主要給大家介紹了關(guān)于SpringBoot如何利用jackson格式化時(shí)間的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • Java?數(shù)據(jù)庫(kù)連接池DBPool?介紹

    Java?數(shù)據(jù)庫(kù)連接池DBPool?介紹

    這篇文章主要給大家分享了Java?數(shù)據(jù)庫(kù)連接池DBPool?介紹,<BR>DBPool是一個(gè)高效的易配置的數(shù)據(jù)庫(kù)連接池。它除了支持連接池應(yīng)有的功能之外,還包括了一個(gè)對(duì)象池使你能夠開(kāi)發(fā)一個(gè)滿足自已需求的數(shù)據(jù)庫(kù)連接池,下面一起來(lái)看看文章內(nèi)容的詳細(xì)介紹吧,需要的朋友可以參考一下
    2021-11-11
  • springsecurity6配置自定義路徑身份認(rèn)證的實(shí)現(xiàn)

    springsecurity6配置自定義路徑身份認(rèn)證的實(shí)現(xiàn)

    本文主要介紹了springsecurity6配置自定義路徑身份認(rèn)證的實(shí)現(xiàn),通過(guò)使用自定義的AuthorizationManager和MyService,可以實(shí)現(xiàn)更靈活的訪問(wèn)控制,感興趣的可以了解一下
    2025-03-03
  • java GUI界面初步入門(mén)示例【AWT包】

    java GUI界面初步入門(mén)示例【AWT包】

    這篇文章主要介紹了java GUI界面,結(jié)合簡(jiǎn)單實(shí)例形式分析了java使用AWT包進(jìn)行圖形界面操作相關(guān)使用技巧,需要的朋友可以參考下
    2020-01-01
  • 簡(jiǎn)單易懂的java8新特性之lambda表達(dá)式知識(shí)總結(jié)

    簡(jiǎn)單易懂的java8新特性之lambda表達(dá)式知識(shí)總結(jié)

    一直想針對(duì)lambda表達(dá)式作一個(gè)總結(jié),借助于這次公司安排的考試作一個(gè)入門(mén)式的總結(jié),對(duì)正在學(xué)習(xí)java的小伙伴們非常有幫助,需要的朋友可以參考下
    2021-05-05
  • Java中的靜態(tài)內(nèi)部類詳解及代碼示例

    Java中的靜態(tài)內(nèi)部類詳解及代碼示例

    這篇文章主要介紹了Java中的靜態(tài)內(nèi)部類詳解及代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • 告訴你為什么?ThreadLocal?可以做到線程隔離

    告訴你為什么?ThreadLocal?可以做到線程隔離

    對(duì)于 ThreadLocal 我們都不陌生,它的作用如同它的名字用于存放線程本地變量,這篇文章主要介紹了為什么?ThreadLocal?可以做到線程隔離,需要的朋友可以參考下
    2022-07-07
  • 利用IDEA社區(qū)版創(chuàng)建SpringBoot項(xiàng)目的詳細(xì)圖文教程

    利用IDEA社區(qū)版創(chuàng)建SpringBoot項(xiàng)目的詳細(xì)圖文教程

    大家應(yīng)該都知道Idea社區(qū)版本,默認(rèn)是不能創(chuàng)建SpringBoot項(xiàng)目的,下面這篇文章主要給大家介紹了關(guān)于利用IDEA社區(qū)版創(chuàng)建SpringBoot項(xiàng)目的詳細(xì)圖文教程,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Java中的MapStruct實(shí)現(xiàn)詳解

    Java中的MapStruct實(shí)現(xiàn)詳解

    這篇文章主要介紹了Java中的MapStruct實(shí)現(xiàn)詳解,MapStruct 是一個(gè)代碼生成器,它基于約定優(yōu)先于配置的方法大大簡(jiǎn)化了 JavaBean 類型之間映射的實(shí)現(xiàn),生成的映射代碼使用普通方法調(diào)用,需要的朋友可以參考下
    2023-11-11

最新評(píng)論

陵川县| 全南县| 永嘉县| 长白| 肥城市| 鹤峰县| 宜兰市| 临漳县| 萝北县| 高阳县| 象山县| 东丽区| 日喀则市| 吐鲁番市| 赤峰市| 息烽县| 泗水县| 锡林浩特市| 射洪县| 无棣县| 永康市| 策勒县| 永新县| 武威市| 拜城县| 保德县| 宜宾县| 唐海县| 余庆县| 叶城县| 紫金县| 宝兴县| 红原县| 夏河县| 洱源县| 侯马市| 于都县| 田林县| 兰州市| 新巴尔虎左旗| 杭锦后旗|