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

首頁 > 學院 > 開發設計 > 正文

Java中的instanceof關鍵字

2019-11-17 04:28:10
字體:
來源:轉載
供稿:網友

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) {
//計算燃氣賬單
}

所以,使用instanceof在絕大多數情況下并不是推薦的做法,應當好好利用多態。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凉城县| 永春县| 盐边县| 长岭县| 柘荣县| 娄烦县| 贵南县| 兴仁县| 巴中市| 舟山市| 贡嘎县| 洛阳市| 安吉县| 南平市| 永康市| 昆山市| 望都县| 周宁县| 石狮市| 兴宁市| 银川市| 桓仁| 东宁县| 江孜县| 鱼台县| 鹤岗市| 洪江市| 右玉县| 西乌珠穆沁旗| 循化| 孝昌县| 聊城市| 泰安市| 大埔区| 平远县| 普安县| 乐陵市| 公主岭市| 苍梧县| 南昌县| 湄潭县|