国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java instanceof關鍵字的的進一步理解

2019-11-26 15:17:14
字體:
來源:轉載
供稿:網友

instanceof是Java的一個二元操作符,和==,>,<是同一類東東。由于它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實例,返回boolean類型的數據。舉個例子:

復制代碼 代碼如下:

    String s = "I AM an Object!";
    boolean isObject = s instanceof Object;
 

我們聲明了一個String對象引用,指向一個String對象,然后用instancof來測試它所指向的對象是否是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) {
    //計算燃氣賬單
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沈阳市| 汽车| 璧山县| 江口县| 汝阳县| 中江县| 小金县| 漯河市| 汉源县| 东海县| 田阳县| 藁城市| 仪征市| 上饶县| 浮山县| 庆安县| 商城县| 开封县| 布拖县| 威海市| 永定县| 会同县| 九江县| 蒙自县| 武清区| 通山县| 塔城市| 安福县| 仙游县| 凤冈县| 新龙县| 樟树市| 响水县| 长沙市| 昆明市| 读书| 诸城市| 黔西| 紫阳县| 泸定县| 鄂伦春自治旗|