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關鍵字的作用...