<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    開源俱樂部

    開源框架

    java instanceof淺談!

    Posted on 2007-07-04 22:17 HandSoft 閱讀(878) 評論(0)  編輯  收藏 所屬分類: 雜談
    instanceof 是Java的一個(gè)二元操作符,和==, > , < 是同一類東西. 由于它是由字母組成的,所以也是Java的保留關(guān)鍵字. 它的作用是測試它左邊的對象是否是它右邊的類的實(shí)例, 返回boolean類型的數(shù)據(jù)。例:
          String s = "I an an Object!";
          boolean isObject = s  instanceOf  Object;
    我們聲明了一個(gè)String對象引用, 指向一個(gè)String 對象, 然后用instanceof 來測試它所指向的對象是否是Object類的一個(gè)實(shí)例, 顯然, 這是真的, 所以返回true,也就是isObject的值為True.
          instanceof有一些用處. 比如我們寫了一個(gè)處理帳單的系統(tǒng), 其中有這樣三個(gè)類:
          public class Bill{//省略細(xì)節(jié)}
          public class PhoneBill  extends Bill {//省略細(xì)節(jié)}
          public class GasBill extends Bill {//省略細(xì)節(jié)}    
    在處理程序里有一個(gè)方法, 接受一個(gè)Bill類型的對象, 計(jì)算金額. 假設(shè)兩種帳單計(jì)算方法不同, 而傳入的Bill對象可能是兩種中的任何一種, 所以要用instanceof來判斷:
          public  double  calculate(Bill  bill){
                 if(bill  instanceof PhoneBill){
                       //計(jì)算電話帳單
                 }
                 if(bill  instanceof  GasBill){
                      //計(jì)算煤氣帳單
                 }
                 ...
          }
    這樣就可以用一個(gè)方法處理兩種子類.
    然而, 這種做法通常被認(rèn)為是沒有好好利用面向?qū)ο笾械亩鄳B(tài)性.  其實(shí)上面的功能要求用方法重載完全可以實(shí)現(xiàn), 這是面向?qū)ο缶幊蓱?yīng)有的做法, 避免回到結(jié)構(gòu)化編程模式. 只有提供兩個(gè)名字和返回值都相同, 接受參數(shù)類型不同的方法就可以了: 
          public double calculate(PhoneBill bill){
               //計(jì)算電話帳單
          }
           public double calculate(GasBill  bill){
              //計(jì)算燃?xì)鈳?br>       }
    所以,  使用instanceof在絕大多數(shù)情況下并不是推薦的做法, 應(yīng)當(dāng)好好利用多態(tài).
    主站蜘蛛池模板: 日韩高清免费观看| 成年男女男精品免费视频网站| 免费大黄网站在线看| 在线91精品亚洲网站精品成人| 午夜a级成人免费毛片| 亚洲国产精品嫩草影院| 免费国产作爱视频网站| 亚洲成在人线中文字幕| 亚洲精品在线免费看| 67194在线午夜亚洲| 在线免费观看色片| 精品在线视频免费| 亚洲午夜久久久久妓女影院| 成人性生交大片免费看好| 久久青青草原亚洲AV无码麻豆 | 亚洲AV无码一区二区三区在线观看| 真人无码作爱免费视频| 亚洲人成电影在线播放| 久久精品免费观看| 亚洲国产夜色在线观看| 日本免费网站观看| 中文字幕无码毛片免费看| 老色鬼久久亚洲AV综合| 无码人妻久久一区二区三区免费丨| 亚洲精品无码专区| 国产精品亚洲综合一区| 182tv免费观看在线视频| 亚洲精品无码久久久久秋霞 | 在线看片免费人成视频播| 亚洲男人天堂影院| 国产在线ts人妖免费视频| 久久免费99精品国产自在现线| 亚洲视频2020| 国产精品视_精品国产免费 | 亚洲av无码偷拍在线观看| 亚洲欧洲精品成人久久奇米网| 久久久久国产精品免费看| 亚洲国产av玩弄放荡人妇| 亚洲va无码va在线va天堂| 四虎免费大片aⅴ入口| 久久精品国产免费|