เริ่มต้นด้วย Polymorphism มาจากคำภาษากรีก Poly (ซึ่งหมายถึง many) และ morphism (ซึ่งหมายถึงรูปแบบ)
ความแตกต่างแสดงให้เห็นตัวอย่างในการเขียนโปรแกรมเชิงวัตถุซึ่งวิธีการในคลาสต่าง ๆ ที่ทำสิ่งที่คล้ายกันควรมีชื่อคล้ายกัน ความหลากหลายเป็นรูปแบบ OOP ที่ช่วยให้คลาสจำนวนมากที่มีฟังก์ชันการทำงานแตกต่างกันเพื่อดำเนินการหรือแชร์อินเทอร์เฟซทั่วไป ประโยชน์ของ polymorphism คือโค้ดที่เขียนใน class ต่างๆ กันไม่มีผลใดๆ กับ class ที่เป็นอยู่ เพราะมันถูกใช้ในลักษณะเดียวกัน เพื่อให้แน่ใจว่าคลาสใช้แนวทางพหุสัณฐาน เราสามารถเลือกระหว่างหนึ่งในสองทางเลือกของคลาสนามธรรมหรืออินเทอร์เฟซ
ลองใช้หลักการความหลากหลายด้วยความช่วยเหลือของอินเทอร์เฟซ
อินเทอร์เฟซ อินเทอร์เฟซคล้ายกับคลาสยกเว้นว่าไม่สามารถมีรหัสได้ อินเทอร์เฟซสามารถกำหนดชื่อเมธอดและอาร์กิวเมนต์ได้ แต่ไม่ใช่เนื้อหาของเมธอด คลาสใดๆ ที่รันอินเทอร์เฟซต้องรันเมธอดทั้งหมดที่มีลักษณะเฉพาะของอินเตอร์เฟส
ตัวอย่าง:
<?php interface Machine { public function calcTask(); } class Circle implements Machine { private $radius; public function __construct($radius){ $this -> radius = $radius; } public function calcTask(){ return $this -> radius * $this -> radius * pi(); } } class Rectangle implements Machine { private $width; private $height; public function __construct($width, $height){ $this -> width = $width; $this -> height = $height; } public function calcTask(){ return $this -> width * $this -> height; } } $mycirc = new Circle(3); $myrect = new Rectangle(3,4); echo $mycirc->calcTask(); echo $myrect->calcTask(); ?>
ผลลัพธ์:
28.274 12
คำอธิบาย:
อินเทอร์เฟซที่มีชื่อของ " เครื่อง" ยอมรับคลาสทั้งหมดที่ใช้เพื่อกำหนดวิธีการนามธรรมด้วยชื่อของ calcTask() ตามความสอดคล้อง คลาส Circle ใช้งานอินเทอร์เฟซโดยกำหนดเมธอด callTask() ด้วยเนื้อหาที่เกี่ยวข้องภายใน คลาสสี่เหลี่ยมผืนผ้ายังใช้ส่วนต่อประสานเครื่อง แต่กำหนดวิธีการ calcTask() ด้วยเนื้อหาอื่นที่แตกต่างจากวิธีการคลาสวงกลม CalTask() แนวทางความหลากหลายทางเพศกล่าวว่า สำหรับสถานการณ์นี้ วิธีการทั้งหมดที่คำนวณงานจะมีชื่อที่เทียบเท่ากัน ตอนนี้ ไม่ว่าจุดใดที่เราจะต้องคำนวณงานสำหรับคลาสต่างๆ เราจะเรียกเมธอดที่มีชื่อ calcTask() โดยไม่ต้องคำนึงถึงรายละเอียดวิธีการคำนวณงานจริงสำหรับเครื่องต่างๆ มากนัก สิ่งสำคัญที่เราจะต้องรู้คือชื่อของวิธีการคำนวณงาน