亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中內部類使用方法實戰案例分析

發布時間:2020-10-04 15:06:03 來源:腳本之家 閱讀:105 作者:cakincqm 欄目:編程語言

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

一 點睛

分三種情況討論內部類的使用:

1 在外部類內部使用內部類

2 在外部類以外使用非靜態內部類

3 在外部類以外使用靜態內部類

二 在外部類內部使用內部類

可以直接通過內部類的類名來定義變量,通過new調用內部構造器來創建實例。

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

三 在外部類以外使用非靜態內部類

1 點睛

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

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

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

使用public修飾的內部類:可被任意地方訪問。

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

OuterClass.InnerClass varName

內部類完整類名應該是OuterClass.InnerClass。如果外部類有包名,則應該增加包名前綴

在外部類以外的地方使用非靜態內部類創建對象的語法如下:

OuterInstance.new InnerConstructor()

2 代碼

CreateInnerInstance.java

class Out
{
  // 定義一個內部類,不使用訪問控制符,
  // 即只有同一個包中其他類可訪問該內部類
  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的形式定義內部類變量
   Out.In in;
   創建外部類實例,非靜態內部類實例將寄存在該實例中
   Out out = new Out();
   通過外部類實例和new來調用內部類構造器創建非靜態內部類實例
   in = out.new In("測試信息");
   */
  }
}

3 運行

測試信息

4 代碼

SubClass.java

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

CreateInnerInstance.java

class Out
{
  // 定義一個內部類,不使用訪問控制符,
  // 即只有同一個包中其他類可訪問該內部類
  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的形式定義內部類變量
   Out.In in;
   創建外部類實例,非靜態內部類實例將寄存在該實例中
   Out out = new Out();
   通過外部類實例和new來調用內部類構造器創建非靜態內部類實例
   in = out.new In("測試信息");
   */
 
   SubClass subclass = new SubClass(new Out());
  }
}

5 運行

測試信息
hello

6 說明

非靜態內部類In對象和SubClass對象都必須持有指向Outer對象的引用,區別是創建兩種對象時傳入Out對象的方式不同:當創建非靜態內部類In類的對象時,必須通過Outer對象來調用new關鍵字,當創建SubClass類的對象時,必須使用Outer對象作為調用者來調用In類的構造器。

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

四 在外部類以外使用靜態內部類

1 點睛

在外部類以外的地方使用靜態內部類創建對象的語法如下:

new OuterClass.InnerConstructer();

2 代碼

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

3 運行

靜態內部類的構造器

更多java相關內容感興趣的讀者可查看本站專題:《Java面向對象程序設計入門與進階教程》、《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

皋兰县| 舟曲县| 乡宁县| 宁陕县| 新泰市| 改则县| 塔城市| 翁牛特旗| 康定县| 阿拉善左旗| 大丰市| 崇信县| 宝清县| 太和县| 东源县| 盐津县| 新和县| 凤山市| 洪泽县| 慈溪市| 梅河口市| 文化| 太仆寺旗| 新蔡县| 莱西市| 胶南市| 和顺县| 阿瓦提县| 油尖旺区| 罗甸县| 常熟市| 轮台县| 雷州市| 汾阳市| 固始县| 临漳县| 灵宝市| 特克斯县| 田东县| 榆中县| 东宁县|