JAVA內部類的 一些總結—中國加固工程網

<dl id="fr99l"></dl>
<pre id="fr99l"></pre>

        <pre id="fr99l"></pre>

        <pre id="fr99l"></pre>
        <dl id="fr99l"></dl>

          <pre id="fr99l"></pre>
            24小時廣告服務熱線:13176674641     用戶名: 密碼: 驗證碼:    
          行業動態(3229) 媒體報道(1370) 市場商情(975) 相關技術(1002) 政策法規(874)
           您現在所在位置:中國加固工程網首頁 >>> 行業資訊 >>> 正文
          JAVA內部類的 一些總結
          【顏色: 發布日期:2019年5月28日   信息來源:互聯網   瀏覽1319次 【字體: 】  

          JAVA內部類的 一些總結

            作為剛入門Java的 小白,這兩天看到內部類,這里做一個總結,如出缺點,迎接斧正~

            內部類是指在一個外部類的 內部再定義一個類。類名不須要和文件夾雷同。

            內部類分為 成員內部類、局部內部類、靜態嵌套類、匿名內部類 。
           

           

            1.成員內部類

            成員內部類是最通俗的 內部類,它的 定義為位于另一個類的 內部,形如下面的 情勢

          class Outter {

            private int age = 12;

            class Inner {



            private int age = 13;



            public void print() {





            int age = 14;





            System.out.println("局部變量" + age);





            System.out.println("內部類變量" + this.age);





            System.out.println("外部類變量" + Outter.this.age);



            }

            }
          }
          public class test1 {

            public static void main(String[] args) {



            Outter out = new Outter();



            Outter.Inner in = out.new Inner();



            in.print();

            }
          }

            運行成果

            局部變量14
            內部類變量13
            外部類變量12

            從本例可以看出成員內部類,就是作為外部類的 成員,可以直接應用外部類的 所有成員和辦法,即使是private的 。固然成員內部類可以無前提地拜訪外部類的 成員,而外部類想拜訪成員內部類的 成員卻不是這么隨心所欲了。在外部類中假如要拜訪成員內部類的 成員,必須先創建一個成員內部類的 對象,再經由過程指向這個對象的 引用來拜訪

          class Outter {

            private int age = 12;

            public Outter(int age) {



            this.age = age;



            getInInstance().print();
          //必須先創建成員內部類的 對象,再進行拜訪!

            }

            private Inner getInInstance() {



            return new Inner();

            }

            class Inner {



            public void print() {





            System.out.println("內部類沒同名,所以直接調用外部類成員變量" + age);



            }

            }
          }
          public class test1 {

            public static void main(String[] args) {



            Outter out = new Outter(10);

            }
          }

            運行成果

            內部類沒同名,所以直接調用外部類成員變量10
            內部類可以擁有private拜訪權限、protected拜訪權限、public拜訪權限及包拜訪權限。

            比如上面的 例子,假如成員內部類Inner用private潤飾,則只能在外部類的 內部拜訪,假如用public潤飾,則任何處所都能拜訪;假如用protected潤飾,則只能在同一個包下或者持續外部類的 情況下拜訪;假如是默認拜訪權限,則只能在同一個包下拜訪。

            這一點和外部類有一點不一樣,外部類只能被public和包拜訪兩種權限潤飾。

            我小我是這么懂得的 ,因為成員內部類看起來像是外部類的 一個成員,所以可以像類的 成員一樣擁有多種權限潤飾。要留意的 是,成員內部類不克不及含有static的 變量和辦法。因為成員內部類須要先創建了外部類,才能創建它本身的

            2.局部內部類

            局部內部類是定義在一個辦法或者一個感化域里面的 類,它和成員內部類的 差別在于局部內部類的 拜訪僅限于辦法內或者該感化域內。

            定義在辦法里的 內部類

          class Outter {

            private int age = 12;

            public void Print(final int x) {
            //這里局部變量x必須設置為final類型!



            class Inner {





            public void inPrint() {







            System.out.println(x);







            System.out.println(age);





            }



            }



            new Inner().inPrint();

            }
          }
          public class test1 {

            public static void main(String[] args) {



            Outter out = new Outter();



            out.Print(10);

            }
          }

            運行成果

            10
            12

            本例中我們將內部類移到了外部類的 辦法中,然后在外部類的 辦法中再生成一個內部類對象去調用內部類辦法。假如此時我們須要往外部類的 辦法中傳入參數,那么外部類的 辦法形參必須應用final定義。

            換句話說,在辦法中定義的 內部類只能拜訪辦法中final類型的 局部變量,這是因為在辦法中定義的 局部變量相當于一個常量,它的 生命周期超出辦法運行的 生命周期,因為局部變量被設置為final,所以不克不及再內部類中改變局部變量的 值。(這里看到網上有不合的 解釋,還沒有徹底搞清楚==)

            定義在感化域內的 內部類

          class Outter {
            private int age = 12;
            public void Print(final boolean x) {  //這里局部變量x必須設置為final類型!



            if(x){






          class Inner {









            public void inPrint() {











            System.out.println(age);









            }







            }






          new Inner().inPrint();



            }




            }
          }
          public class test1 {

            public static void main(String[] args) {



            Outter out = new Outter();



            out.Print(true);

            }
          }

            運行成果

            12


            3.靜態嵌套類

            又叫靜態局部類、嵌套內部類,就是潤飾為static的 內部類。聲明為static的 內部類,不須要內部類對象和外部類對象之間的 接洽,就是說我們可以直接引用outer.inner,即不須要創建外部類,也不須要創建內部類。

          class Outter {

            private static int age = 12;

            static class Inner {



            public void print() {





            System.out.println(age);



            }

            }
          }
          public class test1 {

            public static void main(String[] args) {



            Outter.Inner in = new Outter.Inner();



            in.print();

            }
          }

            運行成果

            12

            可以看到,假如用static 將內部內靜態化,那么內部類就只能拜訪外部類的 靜態成員變量,具有局限性。

            其次,因為內部類被靜態化,是以Outter.Inner可以當做一個整體看,可以直接new 出內部類的 對象(經由過程類名拜訪static,生不生成外部類對象都沒緊要)

            4.匿名內部類

            匿名內部類應當是日常平凡我們編寫代碼時用得最多的 ,在編寫事宜監聽的 代碼時應用匿名內部類不只便利,并且使代碼加倍輕易保護。下面這段代碼是一段Android事宜監聽代碼

          scan_bt.setOnClickListener(new OnClickListener() {





            @Override





            public void onClick(View v) {







            // TODO Auto-generated method stub





            }



            });



            history_bt.setOnClickListener(new OnClickListener() {








            @Override





            public void onClick(View v) {







            // TODO Auto-generated method stub





            }



            });
            這段代碼為兩個按鈕設置監聽器,這里面就應用了匿名內部類,廣州java培訓Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。。具體地位是這段

          new OnClickListener() {






            @Override





            public void onClick(View v) {







            // TODO Auto-generated method stub





            }



            }
            代碼中須要給按鈕設置監聽器對象,應用匿名內部類可以或許在實現父類或者接口中的 辦法情況下同時產生一個響應的 對象,然則前提是這個父類或者接口必須先存在才能如許應用。當然像下面這種寫法也是可以的 ,跟上面應用匿名內部類達到后果雷同

          private void setListener()
          {

            scan_bt.setOnClickListener(new Listener1());




            history_bt.setOnClickListener(new Listener2());
          }
          class Listener1 implements View.OnClickListener{

            @Override

            public void onClick(View v) {

            // TODO Auto-generated method stub

            }
          }
          class Listener2 implements View.OnClickListener{

            @Override

            public void onClick(View v) {

            // TODO Auto-generated method stub

            }
          }

            這種寫法固然能達到一樣的 后果,然則既冗長又難以保護,所以一般應用匿名內部類的 辦法來編寫事宜監聽代碼。同樣的 ,匿名內部類也是不克不及有拜訪潤飾符和static潤飾符的 。

            匿名內部類是獨一一種沒有構造器的 類。正因為其沒有構造器,所以匿名內部類的 應用范圍異常有限,年夜部分匿名內部類用于接口回調。匿名內部類在編譯的 時刻由體系主動起名為Outter$1.class。一般來說,匿名內部類用于持續其他類或是實現接口,并不須要增長額外的 辦法,只是對持續辦法的 實現或是重寫。


           上一條:生男孩的秘訣有哪些?4妙招提高幾率
           下一條:新手開車需要注意的事項
           
           ◎其他資訊
          海內精細空調當先品牌進一步完美營銷網絡2022/1/16
          論文查重體系會斷定哪些行動是剽竊-2022/1/15
          報紙印刷廢氣處理一般采用什么設備?2022/1/14
          便攜式超聲波流量計和手持式超聲波流量計的區別2022/1/14
          機房空調水冷與風冷制冷方法2022/1/13
           ※加固工程網版權與免責聲明:

          凡本網注明“信息來源:加固工程網”的所有文字和圖片稿件,版權均屬于加固工程網所有,任何媒體、網站或個人未經本網協議授權不得轉載、鏈接、轉貼或以其他方式復制發表。已經本網協議授權的媒體、網站,在下載使用時必須注明“信息來源:加固工程網”,違者本網將依法追究責任。

          本網未注明“信息來源:加固工程網”的文/圖等稿件均為轉載稿,本網轉載出于傳遞更多信息的目的,并不意味著贊同其觀點或證實其內容的真實性。如其他媒體、網站或個人從本網下載使用,必須保留本網注明的“信息來源”,并自負版權等法律責任。如擅自篡改,本網將依法追究責任。如對稿件內容有疑議,請及時與我們聯系。

          如本網轉載稿涉及版權等問題,請作者在一周內速來電或來函與加固工程網聯系。
          聯系電話:13176674641
          贊助商鏈接
          您首選的等離子切割機品牌
          中國最大等離子切割機廠家您首選的等離子切割機品牌www.whxinhuo.com薪火科技等離子切割機通過ISO質量認證,
          http://www.whxinhuo.com
          上海精密儀器切割機老品牌
          上海精密儀器切割機老品牌,值得信賴www.canytec.com.cn專業的精密儀器儀表企業,老品牌值得信賴,咨詢熱線:02
          http://www.canytec.com.cn
          設為首頁 | 收藏本站 | 關于我們 | 網站幫助 | 版權申明 | 聯系我們 | 友情鏈接
          服務熱線:13176674641  傳真:13176674641   QQ交流群①:82819534
          客戶服務信箱:470901000#qq.com 企業投遞資訊信箱:470901000#qq.com 請將#換成@  點擊和我聯系吧!
          亚洲国产青草衣衣_亚洲国产区男人本色vr_亚洲国产人成自精在线尤物