欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

一 點睛

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

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

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

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

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

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

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

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

1 點睛

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

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

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

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

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

OuterClass.InnerClass varName

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

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

OuterInstance.new InnerConstructor()

2 代碼

CreateInnerInstance.java

class Out
{
  // 定義一個內(nèi)部類,不使用訪問控制符,
  // 即只有同一個包中其他類可訪問該內(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("測試信息");
   /*
   上面代碼可改為如下三行代碼:
   使用OutterClass.InnerClass的形式定義內(nèi)部類變量
   Out.In in;
   創(chuàng)建外部類實例,非靜態(tài)內(nèi)部類實例將寄存在該實例中
   Out out = new Out();
   通過外部類實例和new來調(diào)用內(nèi)部類構(gòu)造器創(chuàng)建非靜態(tài)內(nèi)部類實例
   in = out.new In("測試信息");
   */
  }
}

3 運行

測試信息

4 代碼

SubClass.java

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

CreateInnerInstance.java

class Out
{
  // 定義一個內(nèi)部類,不使用訪問控制符,
  // 即只有同一個包中其他類可訪問該內(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("測試信息");
   /*
   上面代碼可改為如下三行代碼:
   使用OutterClass.InnerClass的形式定義內(nèi)部類變量
   Out.In in;
   創(chuàng)建外部類實例,非靜態(tài)內(nèi)部類實例將寄存在該實例中
   Out out = new Out();
   通過外部類實例和new來調(diào)用內(nèi)部類構(gòu)造器創(chuàng)建非靜態(tài)內(nèi)部類實例
   in = out.new In("測試信息");
   */
 
   SubClass subclass = new SubClass(new Out());
  }
}

5 運行

測試信息
hello

6 說明

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

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

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

1 點睛

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

new OuterClass.InnerConstructer();

2 代碼

class StaticOut
{
  // 定義一個靜態(tài)內(nèi)部類,不使用訪問控制符,
  // 即同一個包中其他類可訪問該內(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;
   通過new來調(diào)用內(nèi)部類構(gòu)造器創(chuàng)建靜態(tài)內(nèi)部類實例
   in = new StaticOut.StaticIn();
   */
  }
}

3 運行

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

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

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

相關(guān)文章

  • JPA添加Pageable實現(xiàn)翻頁時報錯的問題

    JPA添加Pageable實現(xiàn)翻頁時報錯的問題

    這篇文章主要介紹了解決JPA添加Pageable實現(xiàn)翻頁時報錯的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • JAVA?String常用方法超詳細(xì)講解

    JAVA?String常用方法超詳細(xì)講解

    String其實是Java庫中的一個預(yù)定義的類,String不是基本類型,而是引用類型,使用引用類型的變量稱為引用變量,它引用一個對象,下面這篇文章主要給大家介紹了關(guān)于JAVA?String常用方法的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • Java 采用反射獲取class屬性值的實現(xiàn)代碼

    Java 采用反射獲取class屬性值的實現(xiàn)代碼

    以下是對在Java中采用反射獲取class屬性值的實現(xiàn)代碼進(jìn)行了分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • Java線程的調(diào)度與優(yōu)先級詳解

    Java線程的調(diào)度與優(yōu)先級詳解

    這篇文章主要為大家詳細(xì)介紹了Java線程的調(diào)度與優(yōu)先級,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • SpringBoot實現(xiàn)Excel文件批量上傳導(dǎo)入數(shù)據(jù)庫

    SpringBoot實現(xiàn)Excel文件批量上傳導(dǎo)入數(shù)據(jù)庫

    這篇文章主要為大家詳細(xì)介紹了SpringBoot實現(xiàn)Excel文件批量上傳導(dǎo)入數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • SpringBoot整合Swagger2的示例

    SpringBoot整合Swagger2的示例

    這篇文章主要介紹了SpringBoot整合Swagger2的示例,幫助大家更好的理解和學(xué)習(xí)springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • Java 包和訪問權(quán)限操作

    Java 包和訪問權(quán)限操作

    這篇文章主要介紹了Java 包和訪問權(quán)限操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 關(guān)于Java項目讀取resources資源文件路徑的那點事

    關(guān)于Java項目讀取resources資源文件路徑的那點事

    這篇文章主要介紹了關(guān)于Java項目讀取resources資源文件路徑的那點事,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java中如何讀取和寫入zip文件問題

    Java中如何讀取和寫入zip文件問題

    這篇文章主要介紹了Java中如何讀取和寫入zip文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • springboot登陸過濾功能的實現(xiàn)代碼

    springboot登陸過濾功能的實現(xiàn)代碼

    這篇文章主要介紹了springboot登陸過濾功能的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12

最新評論