開源俱樂部

          開源框架
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          日歷

          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          公告

          解放思想,求實創新

          文章檔案(12)

          友情鏈接

          搜索

          •  

          最新評論

          java instanceof淺談!

          Posted on 2007-07-04 22:17 HandSoft 閱讀(884) 評論(0)  編輯  收藏 所屬分類: 雜談
          instanceof 是Java的一個二元操作符,和==, > , < 是同一類東西. 由于它是由字母組成的,所以也是Java的保留關鍵字. 它的作用是測試它左邊的對象是否是它右邊的類的實例, 返回boolean類型的數據。例:
                String s = "I an an Object!";
                boolean isObject = s  instanceOf  Object;
          我們聲明了一個String對象引用, 指向一個String 對象, 然后用instanceof 來測試它所指向的對象是否是Object類的一個實例, 顯然, 這是真的, 所以返回true,也就是isObject的值為True.
                instanceof有一些用處. 比如我們寫了一個處理帳單的系統, 其中有這樣三個類:
                public class Bill{//省略細節}
                public class PhoneBill  extends Bill {//省略細節}
                public class GasBill extends Bill {//省略細節}    
          在處理程序里有一個方法, 接受一個Bill類型的對象, 計算金額. 假設兩種帳單計算方法不同, 而傳入的Bill對象可能是兩種中的任何一種, 所以要用instanceof來判斷:
                public  double  calculate(Bill  bill){
                       if(bill  instanceof PhoneBill){
                             //計算電話帳單
                       }
                       if(bill  instanceof  GasBill){
                            //計算煤氣帳單
                       }
                       ...
                }
          這樣就可以用一個方法處理兩種子類.
          然而, 這種做法通常被認為是沒有好好利用面向對象中的多態性.  其實上面的功能要求用方法重載完全可以實現, 這是面向對象編成應有的做法, 避免回到結構化編程模式. 只有提供兩個名字和返回值都相同, 接受參數類型不同的方法就可以了: 
                public double calculate(PhoneBill bill){
                     //計算電話帳單
                }
                 public double calculate(GasBill  bill){
                    //計算燃氣帳單
                 }
          所以,  使用instanceof在絕大多數情況下并不是推薦的做法, 應當好好利用多態.
          主站蜘蛛池模板: 平武县| 鹤壁市| 宜都市| 伊宁市| 诸暨市| 宝兴县| 红安县| 墨玉县| 镇宁| 射阳县| 金塔县| 郎溪县| 佛山市| 石景山区| 无为县| 荔浦县| 洛浦县| 康平县| 海兴县| 二连浩特市| 诏安县| 九江市| 交口县| 平顺县| 长治县| 定结县| 嘉禾县| 鹿邑县| 富裕县| 扶风县| 滨州市| 通化县| 澜沧| 张家界市| 灌南县| 武隆县| 神木县| 蛟河市| 丽江市| 外汇| 江西省|