instanceof關鍵字講解

2021-09-24 14:13:00 字數 2945 閱讀 7357

instanceof關鍵字

使用這個關鍵字可以確定乙個物件是類的例項、類的子類,還是實現了某個特定介面,並進行相應的操作。在某些情況下,我們希望確定某個類是否特定的型別,或者是否實現了特定的介面。instanceof操作符非常適合完成這個任務。instanceof操作符檢查三件事情:例項是否某個特定的型別,例項是否從某個特定的型別繼承,例項或者他的任何祖先類是否實現了特定的介面。

例如,假設希望了解名為manager的物件是否為類employee的例項:

$manager

=new

employee()

;…if(

$manager

instanceof

employee

)echo

"yes"

;

有兩點值得注意。首先,類名沒有任何定界符(引號)。使用定界符將導致語法錯誤。其次,如果比較失敗,指令碼將退出執行。instanceof關鍵字在同時處理多個物件時特別有用。例如,你可能要重複地呼叫某個函式,但希望根據物件型別調整函式的行為。可以使用case語句和instanceof關鍵字來實現這個目標。

class

test

class

test

class

testchilern

extends

test$a=

newtest()

;$m=new

test()

;$i=(

$minstanceof

test);

if($i)

echo

'$m是類test的例項!';

// get this value

switch($a

instanceof

test)$d

=new

testchilern()

;if($d

instanceof

test

)echo

'$d是類test的子類!';

// get this value

php中 instanceof有什麼作用

作用:(1)判斷乙個物件是否是某個類的例項,(2)判斷乙個物件是否實現了某個介面。

第一種用法:

<?php

$obj

=newa(

);if(

$obj

instanceofa)

第二種用法:

<?php

inte***ce

exampleinte***ce

class

exampleclass

implements

exampleinte***ce

}$exampleinstance

=new

exampleclass()

;if($exampleinstance

instanceof

exampleinte***ce

)else

?>

輸出結果:yes, it is

另外,需注意 instanceof 與 is_subclass_of() 的區別,請看**:

<?php

class

foo}

class

barextends

foo$a

=new

foo();

$b=newbar()

;echo

"use of test() method\n";$a

->

test()

;$b->

test()

;echo

"instanceof foo\n"

;var_dump($a

instanceof

foo)

;// true

var_dump($b

instanceof

foo)

;// true

echo

"instanceof bar\n"

;var_dump($a

instanceof

bar)

;// false

var_dump($b

instanceof

bar)

;// true

echo

"subclass of foo\n"

;var_dump

(is_subclass_of($a

,'foo'))

;// false

var_dump

(is_subclass_of($b

,'foo'))

;// true

echo

"subclass of bar\n"

;var_dump

(is_subclass_of($a

,'bar'))

;// false

var_dump

(is_subclass_of($b

,'bar'))

;// false

?>

輸出結果(php 5.4.4):

use of test() method

foobar

instanceof foo

bool(true)

bool(true)

instanceof bar

bool(false)

bool(true)

subclass of foo

bool(false)

bool(true)

subclass of bar

bool(false)

多型 instanceof關鍵字

animal a new dog animal a 所有子類型別 概念 父類引用指向子類物件,從而產生多種形態。使用場景一 使用父類作為方法形參實現多型,使方法引數的型別更為寬泛 原理 如果子類覆蓋了父類的方法,則執行子類中覆蓋後的方法 使用場景二 使用父類作為方法返回值實現多型,使方法可以返回不同...

Java 中 instanceof關鍵字

instanceof和isinstance object obj 和isassignablefrom class cls 的區別和聯絡 程式設計的時候可能會遇到乙個不知道它屬於哪個類的物件,我們可以用下列運算子或者方法來判斷。instanceof 是運算子只被用於物件引用變數,檢查左邊的被測試物件是...

java的instanceof關鍵字

instanceof 關鍵字 instanceof關鍵字的作用 判斷乙個物件是否屬於指定的類別。instanceof關鍵字的使用前提 判斷的物件與指定的類別必須要存在繼承或者實現的關係。否則報錯 instanceof關鍵字的使用格式 物件 instanceof 類別 instanceof關鍵字的作用...