氟塑料離心泵www.buybeng.com

          jquery教程http://www.software8.co/wzjs/jquery/

          理解 java 內(nèi)部類(lèi)

          1、內(nèi)部類(lèi)基礎(chǔ)知識(shí):

          一般定義在java類(lèi)內(nèi)部的類(lèi)成為內(nèi)部類(lèi)

          內(nèi)部類(lèi)可以分為:定義在方法體外部的類(lèi)、定義方法內(nèi)部的類(lèi)、靜態(tài)內(nèi)部類(lèi)(只能定義在方法外部),匿名內(nèi)部類(lèi)

          說(shuō)明:

          定義在方法外面的類(lèi):

          類(lèi)的成員變量(靜態(tài)、非靜態(tài))可以訪(fǎng)問(wèn),為了保證能夠正確的引用的類(lèi)的成員變量,所以必須先實(shí)例化外部類(lèi)的對(duì)象,才可以實(shí)例化內(nèi)部類(lèi)的對(duì)象

          訪(fǎng)問(wèn)權(quán)限可以任何,可以把它看成類(lèi)的成員變量,這樣理解就好多來(lái)了。

          定義在方法體內(nèi)的類(lèi);

          類(lèi)的成員變量(靜態(tài)、非靜態(tài))可以訪(fǎng)問(wèn),為了保證能夠正確的引用的類(lèi)的成員變量,所以必須先實(shí)例化外部類(lèi)的對(duì)象,才可以實(shí)例化內(nèi)部類(lèi)的對(duì)象

          訪(fǎng)問(wèn)權(quán)限不可以有,把他看成方法的局部變量就可以了。

          靜態(tài)內(nèi)部類(lèi):

          只能訪(fǎng)問(wèn)類(lèi)的靜態(tài)成員變量

          訪(fǎng)問(wèn)權(quán)限任何

          匿名內(nèi)部類(lèi):

          類(lèi)的成員變量(靜態(tài)、非靜態(tài))可以訪(fǎng)問(wèn),為了保證能夠正確的引用的類(lèi)的成員變量,所以必須先實(shí)例化外部類(lèi)的對(duì)象,才可以實(shí)例化內(nèi)部類(lèi)的對(duì)象

          訪(fǎng)問(wèn)權(quán)限不可以有

          2、內(nèi)部類(lèi)的作用

          內(nèi)部類(lèi)可以很好的隱藏類(lèi),一般類(lèi)不允許有private protect default訪(fǎng)問(wèn)權(quán)限。

          內(nèi)部類(lèi)可以實(shí)現(xiàn)多重基礎(chǔ),彌補(bǔ)了java不能多繼承的特點(diǎn)

          3、例子

          1. package com.ajun.test.innerclass.example;  
          2.   
          3. /** 
          4.  * 水果內(nèi)容 
          5.  * @author Administrator 
          6.  * 
          7.  */  
          8. public interface Contents {  
          9.      String value();  
          10. }  

          1. package com.ajun.test.innerclass.example;  
          2.   
          3. /** 
          4.  * 水果目的地 
          5.  * @author Administrator 
          6.  * 
          7.  */  
          8. public interface Destination {  
          9.   
          10.     //目的地  
          11.     String readLabel();  
          12. }  

          1. package com.ajun.test.innerclass.example;  
          2.   
          3. public class Goods {  
          4.   
          5.     private String des="is ruit!!";  
          6.       
          7.     //方法外部  
          8.     private class Content implements Contents{  
          9.         private String name = "apple "+des;  
          10.         @Override  
          11.         public String value() {  
          12.             return name;  
          13.         }  
          14.     }  
          15.       
          16.     //方法外部  
          17.     private class GDestination implements Destination{  
          18.         private String label ;  
          19.         private GDestination(String label){  
          20.             this.label= label;  
          21.         }  
          22.         @Override  
          23.         public String readLabel() {  
          24.             return label;  
          25.         }  
          26.     }  
          27.       
          28.       
          29.     //匿名內(nèi)部類(lèi)  
          30.     public Destination getdestination(final String label){  
          31.         return new Destination(){  
          32.             @Override  
          33.             public String readLabel() {  
          34.                 return label;  
          35.             }  
          36.         };  
          37.     }  
          38.       
          39.     public Destination dest(String s){  
          40.         return new GDestination(s);  
          41.     }  
          42.       
          43.     public Contents  content(){  
          44.         return new Content();  
          45.     }  
          46.       
          47.     public Destination dest2(String s){  
          48.         class GDestination implements Destination{  
          49.                 private String label;  
          50.                 private GDestination(String label){  
          51.                     this.label= label;  
          52.                 }  
          53.                 @Override  
          54.                 public String readLabel() {  
          55.                     return label;  
          56.                 }  
          57.         }  
          58.         return new GDestination(s);  
          59.    }  
          60.       
          61. }  

          1. package com.ajun.test.innerclass.example;  
          2.   
          3. public class Test {  
          4.   
          5.     public static void main(String [] a){  
          6.         Goods gs = new Goods();  
          7.         Contents c = gs.content();  
          8.         Destination d = gs.dest("Beijing");  
          9.         System.out.println(c.value());  
          10.         System.out.println(d.readLabel());  
          11.         Destination d1 = gs.getdestination("Shanghai");  
          12.         System.out.println(d1.readLabel());  
          13.         System.out.println(gs.dest2("Tianjin").readLabel());  
          14.     }  
          15. }  

          其中Content和Gdestination得到了很好的隱藏,外面調(diào)用的時(shí)候,根本就不知道調(diào)用的是具體哪個(gè)類(lèi),使這個(gè)類(lèi)擁有多繼承的特性。



          輸出;

          1. apple is ruit!!  
          2. Beijing  
          3. Shanghai  
          4. Tianjin  

          posted on 2012-10-27 08:53 你爸是李剛 閱讀(1261) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2012年10月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          技術(shù)網(wǎng)站

          行業(yè)網(wǎng)站

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          站長(zhǎng)網(wǎng) 氟塑料離心泵 注塑機(jī) 液晶廣告機(jī)
          主站蜘蛛池模板: 西昌市| 嘉义市| 平阴县| 湟中县| 博兴县| 宿松县| 克什克腾旗| 育儿| 招远市| 荔浦县| 新津县| 洮南市| 西藏| 固阳县| 秦安县| 成安县| 汽车| 汶川县| 瑞金市| 肥乡县| 柳江县| 樟树市| 湟源县| 苍山县| 武安市| 富平县| 多伦县| 新化县| 西城区| 民县| 德江县| 闽侯县| 桂林市| 迭部县| 五峰| 上杭县| 汕头市| 桂阳县| 永清县| 筠连县| 松江区|