第10章 オブジェクト指向構文 / 第3回 模擬試験

PHPの`instanceof`演算子に関する次の記述のうち、正しいものはどれか。

`instanceof`は、オブジェクトが特定のクラスのインスタンスかどうかを判定する。 正解
`instanceof`は、2つの数値の大小を比較するための演算子である。
`instanceof`は文字列比較にのみ使用できる。
`instanceof`を使うには、対象のクラスをインスタンス化してはならない。
解説
`instanceof`演算子は、`$obj instanceof ClassName`のように使い、左辺のオブジェクトが右辺のクラス(またはその子クラス、あるいは実装しているインターフェイス)のインスタンスであるかどうかを`bool`で判定します。 他の選択肢が誤りである理由は次の通りです。 ・数値の大小比較には`<`, `>`, `<=`, `>=`などの比較演算子を使います。`instanceof`はオブジェクトの型判定専用の演算子です。 ・`instanceof`はオブジェクトに対して使う演算子で、文字列比較には使いません。 ・`instanceof`を使うには、判定したいオブジェクトが既に生成(インスタンス化)されている必要があります。「インスタンス化してはならない」は逆の説明です。 例: ``` class Animal {} class Dog extends Animal {} $d = new Dog(); var_dump($d instanceof Dog); // true var_dump($d instanceof Animal); // true(親クラスでもtrue) ``` (参照: 独習PHP 第4版 第10章 オブジェクト指向構文 10.4.3節 instanceof演算子 p.518〜519)

あわせて読みたい解説記事