中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Java中內部類的使用方法

發布時間:2021-09-14 23:18:50 來源:億速云 閱讀:143 作者:chen 欄目:編程語言

本篇內容主要講解“Java中內部類的使用方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“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中內部類的使用方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

区。| 靖安县| 文山县| 建始县| 项城市| 隆昌县| 紫金县| 封丘县| 东台市| 维西| 通海县| 三明市| 高淳县| 房产| 天长市| 高州市| 云林县| 邹平县| 兴文县| 南皮县| 连云港市| 盖州市| 林芝县| 华安县| 措美县| 托克逊县| 前郭尔| 囊谦县| 潼关县| 西安市| 黄冈市| 株洲市| 阜阳市| 江达县| 稻城县| 清流县| 三江| 廉江市| 青龙| 昂仁县| 会昌县|