⊗ppOpFnMt 64 of 107 menu

วิธีใช้ Abstract Method ใน OOP ของ PHP

Abstract Class ยังสามารถมี Abstract Method ได้ด้วย เมธอดประเภทนี้จะต้องไม่มี implementation (ส่วนตัวของเมธอด) แต่มีไว้เพื่อระบุว่าเมธอดดังกล่าวจะต้องมีอยู่ในคลาสลูกหลาน และ การ implement เมธอดเหล่านี้เป็นหน้าที่ของคลาสลูกหลาน

เพื่อประกาศให้เมธอดเป็น abstract ในการประกาศเมธอดให้ใส่คีย์เวิร์ด abstract

มาลองฝึกปฏิบัติกัน สมมติว่าคลาสลูกทุกตัวของคลาส User จะต้องมีเมธอด increaseRevenue

เมธอดนี้ควรนำรายได้ปัจจุบันของผู้ใช้มาบวกเพิ่มด้วยจำนวนที่ส่งผ่านพารามิเตอร์

ตัวคลาส User เองไม่รู้ว่ารายได้ของคลาสลูกจะเป็นอะไร เพราะสำหรับพนักงานคือเงินเดือน ส่วนสำหรับนักเรียนคือทุนการศึกษา ดังนั้นคลาสลูกแต่ละตัวจะ implement เมธอดนี้ด้วยตัวเอง

ประเด็นคือ Abstract Method ของคลาส User บังคับให้โปรแกรมเมอร์ต้อง implement เมธอดนี้ในคลาสลูก มิฉะนั้น PHP จะแสดงข้อผิดพลาด ดังนั้น คุณหรือโปรแกรมเมอร์คนอื่นที่ทำงานกับโค้ดของคุณจะไม่มีทางลืม implement เมธอดที่จำเป็นในคลาสลูกได้

เอาล่ะ มาลองฝึกปฏิบัติกัน เพิ่ม Abstract Method increaseRevenue เข้าไปในคลาส User:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Abstract method ที่ไม่มี body: abstract public function increaseRevenue($value); } ?>

ให้คลาส Employee ของเรายังคงเหมือนเดิมไม่เปลี่ยนแปลง ในกรณีนี้ ถึงจะไม่สร้างอ็อบเจกต์ของคลาส Employee แต่แค่รันโค้ดที่กำหนดคลาสของเรา PHP ก็จะแสดงข้อผิดพลาดแล้ว

ตอนนี้ให้เราเขียน implementation ของเมธอด increaseRevenue ในคลาส Employee:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // เขียน implementation ของเมธอด: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

ทดสอบการทำงานของคลาสของเรา:

<?php $employee = new Employee; $employee->setName('john'); $employee->setSalary(1000); $employee->increaseRevenue(100); echo $employee->getSalary(); ?>

implement เมธอด increaseRevenue ในคลาส Student ด้วย แต่คราวนี้เมธอดของเราจะเพิ่มทุนการศึกษา:

<?php class Student extends User { private $scholarship; // ทุนการศึกษา public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // เมธอดเพิ่มทุนการศึกษา: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

เพิ่ม Abstract Method increaseRevenue แบบเดียวกันเข้าไปในคลาส User ของคุณ เขียน implementation ของเมธอดนี้ในคลาส Employee และ Student

ในคลาส Figure ให้สร้าง Abstract Method สำหรับหาพื้นที่และความยาวรอบรูป

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