国产探花免费观看_亚洲丰满少妇自慰呻吟_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) {
    //計算燃氣賬單
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海原县| 通榆县| 青阳县| 抚顺县| 灵石县| 辽中县| 修水县| 屏东市| 兴业县| 牡丹江市| 英山县| 武安市| 保康县| 新干县| 巩义市| 阜康市| 宁城县| 宁德市| 三原县| 阳高县| 长宁县| 铜山县| 武乡县| 漳浦县| 犍为县| 伊春市| 阿拉善左旗| 武鸣县| 平遥县| 光泽县| 东光县| 大丰市| 保亭| 巫山县| 东阳市| 区。| 临沭县| 金沙县| 砚山县| 册亨县| 台州市|