⊗ppOpIhOI 36 of 107 menu

PHPにおけるinstanceof演算子とOOにおける継承

instanceof演算子を使用する際の継承の特徴を詳しく見ていきましょう。 親クラスと子クラスがあるとします:

<?php // 親クラス: class ParentClass { } // 子クラス: class ChildClass extends ParentClass { } ?>

子クラスのオブジェクトを作成します:

<?php $obj = new ChildClass; ?>

次に、instanceofを使用して、 このオブジェクトがParentClassクラスと ChildClassクラスに属しているかどうかを確認しましょう:

<?php var_dump($obj instanceof ChildClass); // trueを出力 var_dump($obj instanceof ParentClass); // これもtrueを出力 ?>

この例からわかるように、instanceof演算子は、 親クラスと子クラスを区別せずにチェックを行います。

混乱しないでください - もしオブジェクトが実際に 親クラスのものであれば、当然ながら子クラスへの 所属チェックはfalseを返します:

<?php $obj = new ParentClass; // 親クラスのオブジェクト var_dump($obj instanceof ParentClass); // trueを出力 var_dump($obj instanceof ChildClass); // falseを出力 ?>

パブリックプロパティnamesurnameを持つ Userクラスを作成してください。

Userクラスを継承し、プロパティsalaryを追加する Employeeクラスを作成してください。

パブリックプロパティnamepopulationを持つ Cityクラスを作成してください。

Userクラスのオブジェクトを3個、 Employeeクラスのオブジェクトを3個、 Cityクラスのオブジェクトを3個作成し、 任意の順序で配列$arrに格納してください。

配列$arrをループで処理し、Userクラス またはその子孫クラスに属するオブジェクトの nameプロパティを画面に縦に出力してください。

配列$arrをループで処理し、Userクラス またはその子孫クラスに*属さない*オブジェクトの nameプロパティを画面に縦に出力してください。

配列$arrをループで処理し、*厳密に*Userクラス に属する(つまりCityクラスでもEmployeeクラスでもない) オブジェクトのnameプロパティを画面に縦に出力してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否