⊗ppOpIhOPM 28 of 107 menu

การแทนที่เมธอดของคลาสแม่ใน OOP ใน PHP

คลาสลูกสามารถแทนที่ (override) เมธอดของคลาสแม่ได้ โดยการสร้างเมธอดที่มีชื่อเดียวกัน มาดูตัวอย่างกัน ให้เรามีคลาสแม่ดังต่อไปนี้:

<?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) { } } ?>

โดยทั่วไปแล้ว การแทนที่เมธอดของคลาสแม่ ทำเพื่อเปลี่ยนหรือเพิ่มพฤติกรรมของเมธอดนั้น ในกรณีของเรา ลองเพิ่มการตรวจสอบความยาวของชื่อ:

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

มาทดสอบให้แน่ใจว่าเมธอดที่ถูกแทนที่นั้นถูกเรียกใช้งานจริง เริ่มจากสร้างออบเจ็กต์ของคลาสลูก:

<?php $student = new Student; ?>

ตอนนี้เรียกใช้เมธอดของเรา โดยส่งค่าเข้าไปอย่างถูกต้อง:

<?php $student->setName('john'); ?>

และลองเรียกใช้เมธอดอีกครั้ง โดยส่งค่า ที่ไม่ถูกต้องเข้าไป ผลลัพธ์ที่ได้จะเห็นข้อความแสดงข้อผิดพลาด:

<?php $student->setName(''); // ข้อผิดพลาด ?>

ในคลาส User จงสร้าง getter และ setter สำหรับอายุ

ในคลาส Employee จงแทนที่ (override) setter สำหรับอายุ และเพิ่มการตรวจสอบ ว่าอายุต้องอยู่ระหว่าง 18 ถึง 65 ปี

ไทย
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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ