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

來源:互聯網
上載者:User

Java編程那些事兒71mso-hansi-font-family:Calibri">——內部類簡介

陳躍峰

出自:http://blog.csdn.net/mailbomb

 

8.10  內部類(Inner Class)

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

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

         下面是一個簡單的內部類的範例程式碼:

                   /**

 * 內部類基本使用範例程式碼

 */

public class OutClass {

         int i = 0;

        

         public class
InnerClass{

                   public void
test(){

                            i++;

                   }

         }

}

         在該範例程式碼中,類InnerClassCalibri;mso-hansi-font-family:Calibri">聲明在了類OutClass的內部,所以InnerClassCalibri;mso-hansi-font-family:Calibri">被稱為內部類,而OutClass則被稱為InnerClassCalibri;mso-hansi-font-family:Calibri">的外部類。

         該代碼編譯以後,將產生兩個classmso-hansi-font-family:Calibri">檔案,一個是OutClass.class,另外一個是OutClass$InnerClass.classmso-ascii-font-family:Calibri;mso-hansi-font-family:Calibri">。這裡需要說明的是,內部類也被編譯成一個獨立的類檔案,類檔案的名稱為:外部類類名$mso-hansi-font-family:Calibri">內部類類名.class。

         在內部類中,可以很方便的訪問外部類的屬性imso-hansi-font-family:Calibri">,而外部類不能直接引用內部類中的屬性和方法,文法中提供了一套專門的格式來訪問內部類中的屬性和方法,這些文法這裡就不作介紹了。

         內部類是Javamso-hansi-font-family:Calibri">語言誕生以後新增的一個文法,設計該文法的初衷主要有兩個:

         1、隱藏內部類的實現

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

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

                   在內部類中,可以訪問外部類中的所有屬性和方法,privateCalibri;mso-hansi-font-family:Calibri">存取控制符修飾的屬性和方法也可以被內部類訪問,這樣將方便內部類的編寫,避免了參數傳遞,也減少了外部類需要向其它類開放的屬性和方法的數量。

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

         1、增加了文法的複雜度

                   在一個類的內部聲明一個類,使Javamso-hansi-font-family:Calibri">語言的複雜度增加了很多,也在一定程度上損害了Java語言的編程風格,同時使閱讀代碼的難度大幅度的增加。

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

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

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

         1、圖形化使用者介面編程中的事件處理

         2、Javamso-hansi-font-family:Calibri">語言API中部分功能類的實現

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

         最後需要特別說明的是:在Javamso-hansi-font-family:Calibri">文法中,一個原始碼內部可以編寫多個類,例如:

                   /**

 * 一個類內部聲明多個類

 */

public class TwoClassInOneFile {

         int n = 0;

         public void method(){}

}

 

class AnotherClass {

         char c;

         public void t(){}

}

         這樣的原始碼,在編譯時間,將產生兩個獨立的classmso-hansi-font-family:Calibri">的檔案:TwoClassInOneFile.class和AnotherClass.classCalibri;mso-hansi-font-family:Calibri">,這樣的結構不是內部類。

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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.