⊗ppOpIhCOM 29 of 107 menu

PHPにおけるOOPでのオーバーライドされたメソッドの呼び出し

オーバーライドすると、子クラスは親クラスのオーバーライドされたメソッドへのアクセスを失います。しかし、それでもアクセスすることは可能です。これは、親クラスを指すキーワードparentを使用して行います。

親クラスのメソッドへのアクセスが必要になる可能性のある例を見てみましょう。 次の親クラスがあるとします:

<?php class User { private $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } ?>

子クラスで親クラスのメソッドをオーバーライドしたとします:

<?php class Student extends User { public function setName($name) { if (strlen($name) > 0) { $this->name = $name; } else { echo 'student name error'; } } } ?>

オーバーライドされたメソッドでは、条件が満たされた場合、事実上親クラスのメソッドのコードが実行されていることがわかります。これは不要なコードの重複です。

親クラスのメソッドを呼び出せば、この重複を取り除くことができます。やってみましょう:

<?php class Student extends User { public function setName($name) { if (strlen($name) > 0) { parent::setName($name); // 親クラスのメソッド } else { echo 'student name error'; } } } ?>

次のコードがあります:

<?php class User { private $age; public function setAge($age) { if ($age >= 0) { $this->age = $age; } else { echo 'need age more 0'; } } } class Employee extends User { public function setAge($age) { if ($age <= 120) { if ($age >= 0) { $this->age = $age; } else { echo 'need age more 0'; } } else { echo 'need age less 120'; } } } ?>

Employeeクラスで、親クラスの元のメソッドを使用して、年齢のセッターを簡略化して修正してください。

日本語
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
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否