內部類和匿名內部類

                                                   一 內部類 html

什麼就作內部類? 就是在一個類的內部還存在另一個類,此類即稱爲內部類. this

一、好比咱們定義一個外部類Outer,在Outer類中要定義了一個Inner類,則Inner類稱做爲內部類
二、內部類能夠聲明成public或者private,當內部類聲明成public或者private是,對其訪問的限制與成員變量和成員方法徹底相同
三、內部類的定義格式爲
          標示符class外部類的名稱{
         //外部類的成員
         標識符class內部類的名稱{
          //內部類的成員     
        }

 } spa

首先咱們先看一段使用內部類的看一段程序 .net


以上的程序中,Inner類做爲Outer類的內部類存在的,並在外部類的fun()方法中直接實例化內部類的對象並調用print()方法 htm

一、內部類可讓咱們將邏輯上相關的一組類組織起來,並由外部類(outer class)來控制內部類的可見性。
二、當咱們創建一個inner class時,其對象就擁有了與外部類對象之間的一種關係,這是經過一個特殊的this reference造成的,使得內部類對象能夠隨意的訪問外部類中全部的成員。


從內存圖上看: 對象


內部類存在的特色: 內存

         -----缺點:正常的一個類操做時,在類中最好只定義屬性和方法,若是定義一個類,則會破壞一個程序的結構,程序可讀性很差 get

        ----優勢:經過下面的代碼發現其優勢,要完成第一個代碼功能,咱們將以上的外部類和內部類分開看下代碼,代碼以下: class


   若是將內部類拿到外部來,會發現代碼增長,並且複雜度也增長了。使用內部類最大的優勢就是:能夠很方便的訪問外部類中的私有屬性。 變量

二:使用static聲明內部類


        使用static能夠聲明一個內部類,聲明的內部類就稱做爲外部類,能夠直接在類的外部調用,可是若是想要訪問外部類的私有屬性,則此屬性必須是static訪問權限的。

三:在外部訪問內部類

      一個內部類除了能夠經過外部類訪問,也能夠直接在其餘類中調用,調用的格式爲:

     ------->外部類.內部類 內部類對象 =  外部類實例.new 內部類();


四:在方法中定義內部類:

     一個內部類能夠在任何位置上定義,下面看下在方法中定義的一個內部類

                                       二:匿名內部類

     若是此時B類只使用一次的話,那麼有必要定義一個類嗎?此時能夠用匿名內部類解決這個問題!

       

若是從底層更瞭解匿名內部類能夠看下面一片連接的文章:      

  http://topic.csdn.net/u/20080728/20/d60f719a-c103-44b8-8d0c-bc1c818b768a.html

相關文章
相關標籤/搜索