⊗ppOpIfInr 65 of 107 menu

อินเทอร์เฟสใน OOP ใน PHP

อย่างที่คุณทราบแล้ว คลาสนามธรรมคือชุดของเมธอดสำหรับคลาสลูก เมธอดบางส่วนสามารถถูกนำไปใช้ในคลาสนั้นเองได้ และเมธอดบางส่วนสามารถประกาศเป็นนามธรรมและกำหนดให้ต้องมีการนำไปใช้ในคลาสลูก

ลองจินตนาการถึงสถานการณ์ที่คลาสนามธรรมของคุณมีเฉพาะชุดของเมธอดนามธรรมสาธารณะ โดยไม่เพิ่มเมธอดที่มีการนำไปใช้

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

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

เมื่อใดที่สิ่งนี้จะช่วยได้: สมมติว่าเราสร้าง คลาสแม่และคลาสลูกหลายคลาสจากมัน หากหลังจากนั้นผ่านไประยะหนึ่ง เช่น ผ่านไปหนึ่งเดือน เราตัดสินใจสร้างคลาสลูกอีกคลาส เราอาจจะลืมรายละเอียด ของโค้ดของเราและอาจลืมเขียน การนำเมธอดบางเมธอดไปใช้ในคลาสลูกใหม่ อย่างไรก็ตาม PHP เองจะไม่อนุญาตให้เมธอดหายไป - และจะแค่แสดงข้อผิดพลาด

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

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

สมมติว่าเราต้องการห้ามทางกายภาพ ไม่ให้ทำเมธอดอื่นในคลาสแม่ นอกเหนือจากเมธอดนามธรรม สาธารณะ ใน PHP เพื่อการนี้แทนที่จะใช้คลาสนามธรรม เราสามารถใช้ อินเทอร์เฟส ได้

อินเทอร์เฟสคือคลาสที่ เมธอดทั้งหมดเป็นสาธารณะและไม่มี การนำไปใช้ โค้ดของเมธอดควรถูกนำไปใช้โดย คลาสลูกของอินเทอร์เฟส

อินเทอร์เฟสถูกประกาศเช่นเดียวกับคลาสปกติ แต่ใช้คำสำคัญ interface แทนคำว่า class

สำหรับการสืบทอดจากอินเทอร์เฟส จะใช้ คำศัพท์ที่ต่างออกไปเล็กน้อย: กล่าวคือ คลาสไม่ได้สืบทอดจากอินเทอร์เฟส แต่ นำไปใช้ พวกมัน ดังนั้น แทนที่จะใช้คำว่า extends ควรใช้คำสำคัญ implements

ไม่สามารถสร้างอ็อบเจ็กต์ของอินเทอร์เฟสได้ เมธอดทั้งหมด ของอินเทอร์เฟสต้องประกาศเป็น public และต้องไม่มีการนำไปใช้ อินเทอร์เฟส สามารถมีได้เฉพาะเมธอด ไม่ใช่คุณสมบัติ ไม่สามารถสร้างอินเทอร์เฟสและคลาส ที่มีชื่อเดียวกันได้ด้วย

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