Java instanceof 關鍵字用法示例

2021-07-13 06:13:23 字數 1381 閱讀 5155

if (a instanceof a)表示判斷:如果a是a類的乙個例項。

看乙個具體例子:

先定義乙個父類person類:

abstract class person
然後讓man和woman類分別繼承它,並實現其抽象方法:

class

manextends

person

}class

woman

extends

person

}

下面是測試主程式:

public

class main

public

static

void

main(string args)

}

輸出結果:

man is saying…

woman is saying…

現在,如果我們有個新需求,在woman子類中新增了乙個getangry()方法,變成如下:

class

woman

extends

person

public

void getangry()

}

那麼如果我們想在測試主類中的say()方法中呼叫這個getangry()方法,該怎麼呼叫呢?

如果像這樣:

public

static

void

say(person p)

由於p被轉換成了person型別,而person類中是沒有getangry()方法的,所以會報錯。

那把p強制轉換成woman型別可以不呢?試試:

public

static

void

say(person p)

編譯沒出錯,但是執行會出錯,因為我們還傳入了乙個p1,是乙個man物件,是不能強制轉換成woman型別的。

解決辦法就是:我們判斷一下say()方法傳入的引數p是不是woman類的例項,如果是的話就執行getangry()方法,否則就不執行。

如下:

public

static

void

say(person p)

}

執行結果:

man is saying…

woman is saying…

woman gets angry…

那麼,假如p是woman的例項了,強制轉換這一步還是不是必須的呢?答案是肯定的,仍然要強制轉換,因為雖然p是woman類的例項,但在傳入時p是person型別的。

Java instanceof 解析記錄

instanceof在實際開發中常用於型別強轉時的判斷,如在專案中不進行判斷進行強制轉換會出現型別轉換異常public inte ce animal public class animalmpl implements animal public class dog extend animalmpl ...

Java instanceof關鍵字詳解

1.instanof是什麼?它屬於比較運算子 該關鍵字用來判斷乙個物件是否是指定類的物件。2.用法 物件 instanceof類 該表示式是乙個比較運算子,返回的結果是boolea 型別 true false 注意 使用instanceof 關鍵字做判斷時,兩個類之間必須有關係 3.案例 定義乙個功...

學習Java instanceof運算子

instaceof 運算子 使用格式 引用型別變數 instanceof 引用型別 該表示式為boolean型別表示式,當左側引用型別變數所引用物件的實際型別是其右側給出的型別或其右側給出的型別或子類型別時,表示式結果為true,否則為false。inte ce base class fulei i...