程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java編程那些事兒71——內部類簡介

Java編程那些事兒71——內部類簡介

編輯:關於JAVA

8.10 內部類(Inner Class)

內部類是Java語言中的一種特殊的語法,簡單的來說,就是在一個類的內部再聲明一個類,這些聲明在類內部的類就被稱作內部類。在實際聲明時,內部類可以聲明在類的內部、類的方法內部,也可以聲明在類的構造方法內部,內部類聲明的語法格式和一般類的聲明一樣,只是內部類聲明時可以使用static修飾符進行修飾。

對於內部類的相關使用,本部分不做深入的介紹,只是進行簡單的說明,輔助建立內部類的概念,能夠進行一些基本的使用。

下面是一個簡單的內部類的示例代碼:

/**

* 內部類基本使用示例代碼

*/

public class OutClass {

 int i = 0;

 public class InnerClass{

  public void test(){

   i++;

  }

 }

}

在該示例代碼中,類InnerClass聲明在了類OutClass的內部,所以InnerClass被稱為內部類,而OutClass則被稱為InnerClass的外部類。

該代碼編譯以後,將生成兩個class文件,一個是OutClass.class,另外一個是OutClass$InnerClass.class。這裡需要說明的是,內部類也被編譯成一個獨立的類文件,類文件的名稱為:外部類類名$內部類類名.class。

在內部類中,可以很方便的訪問外部類的屬性i,而外部類不能直接引用內部類中的屬性和方法,語法中提供了一套專門的格式來訪問內部類中的屬性和方法,這些語法這裡就不作介紹了。

內部類是Java語言誕生以後新增的一個語法,設計該語法的初衷主要有兩個:

1、隱藏內部類的實現

也就是將只有被外部類使用的功能隱藏在內部類的內部,其它類訪問這個內部類時的語法會比較復雜,從而在一定程度了避免了其它類對於內部類的訪問。

2、內部類可以訪問外部類的所有屬性和方法,避免了參數傳遞

在內部類中,可以訪問外部類中的所有屬性和方法,private訪問控制符修飾的屬性和方法也可以被內部類訪問,這樣將方便內部類的編寫,避免了參數傳遞,也減少了外部類需要向其它類開放的屬性和方法的數量。

當然,內部類除了帶來一系列的好處以外,還帶來了一系列的不足,主要的不足有如下幾點:

1、增加了語法的復雜度

在一個類的內部聲明一個類,使Java語言的復雜度增加了很多,也在一定程度上損害了Java語言的編程風格,同時使閱讀代碼的難度大幅度的增加。

2、使整個項目的結構變得復雜

內部類通過增加每個類的復雜度,使得項目的結構變得更加復雜,而且沒有原來的結構那麼清晰。

當前內部類的語法在以下編程技術中的應用比較多:

1、圖形用戶界面編程中的事件處理

2、Java語言API中部分功能類的實現

綜合以上說明,在實際的開發過程中,如果不是十分必要,不建議編寫內部類,對於內部類實現的功能可以使用類和類之間的調用進行實現,這樣可以保留Java語言清晰的編程風格。

最後需要特別說明的是:在Java語法中,一個源代碼內部可以編寫多個類,例如:

/**

* 一個類內部聲明多個類

*/

public class TwoClassInOneFile {

 int n = 0;

 public void method(){}

}

class AnotherClass {

 char c;

 public void t(){}

}

這樣的源代碼,在編譯時,將生成兩個獨立的class的文件:TwoClassInOneFile.class和AnotherClass.class,這樣的結構不是內部類。

在實際項目中,不推薦進行這樣的編碼,主要原因是不方便類源代碼的查找,而推薦每個源文件內部只聲明一個類的形式。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved