⊗ppOpIfII 74 of 107 menu

การสืบทอดจากคลาสและการใช้งานอินเทอร์เฟซใน OOP ใน PHP

คลาสสามารถสืบทอดจากคลาสอื่นได้ และในขณะเดียวกันก็สามารถใช้งานอินเทอร์เฟซบางตัวได้ ลองดูตัวอย่างเชิงปฏิบัติ

สมมติว่าเราต้องการสร้างคลาส Programmer ซึ่งจะมีชื่อ เงินเดือน และรายการภาษาที่โปรแกรมเมอร์รู้จัก ขณะนี้อธิบายคลาสของเรายังคลุมเครือมาก: ใช่ ในคลาสจะมีชื่อ เงินเดือน ภาษา - แต่จะมีเมธอดอะไรบ้างในคลาสของเรา?

เรามาอธิบายคลาสของเราให้แม่นยำยิ่งขึ้นโดยใช้ อินเทอร์เฟซ iProgrammer:

<?php interface iProgrammer { public function __construct($name, $salary); public function getName(); public function getSalary(); public function getLangs(); public function addLang($lang); } ?>

สมมติว่าเราค้นหาจากคลาสที่เราเขียนไว้แล้ว และปรากฎว่ามีคลาส Employee ที่คล้ายกันอยู่แล้ว มันไม่ได้มีเมธอดทั้งหมดเหมือนคลาส Programmer แต่มีบางส่วน นี่คือโค้ดของคลาสที่มีอยู่แล้วของเรา:

<?php class Employee { private $name; private $salary; public function __construct($name, $salary) { $this->name = $name; $this->salary = $salary; } public function getName() { return $this->name; } public function getSalary() { return $this->salary; } } ?>

ในกรณีของเรา ตรรกะคือการทำให้ คลาสใหม่ของเรา Programmer สืบทอด เมธอดที่จำเป็นบางส่วนจากคลาส Employee (และบางส่วนเราจะมาเขียนเอง ในคลาสใหม่นี้):

<?php class Programmer extends Employee { } ?>

ในขณะเดียวกันเรารู้ว่าคลาส Programmer ควรใช้งานอินเทอร์เฟซ iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

ลองรวมการสืบทอดจากคลาส Employee และการใช้งานอินเทอร์เฟซ iProgrammer:

<?php class Programmer extends Employee implements iProgrammer { } ?>

จะได้ว่า คลาสของเรา Programmer จะสืบทอดเมธอด __construct, getName และ getSalary จากคลาส Employee และเมธอด addLang และ getLangs เราจะต้องเขียนเอง:

<?php class Programmer extends Employee implements iProgrammer { public function addLang($lang) { // การเขียนโค้ด } public function getLangs() { // การเขียนโค้ด } } ?>

อินเทอร์เฟซ iProgrammer ไม่สนใจว่า เมธอดจะเป็นของคลาสเองหรือสืบทอดมา - สิ่งสำคัญคือเมธอดทั้งหมดที่อธิบายไว้ต้องถูกเขียนขึ้น

คัดลอกโค้ดคลาส Employee ของฉัน และโค้ดอินเทอร์เฟซ iProgrammer อย่าคัดลอก ต้นแบบคลาส Programmer ของฉัน - โดยไม่ต้องดูโค้ดของฉัน ให้เขียนคลาสนี้ด้วยตนเอง

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