เริ่มต้นด้วย 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() โดยไม่ต้องคำนึงถึงรายละเอียดวิธีการคำนวณงานจริงสำหรับเครื่องต่างๆ มากนัก สิ่งสำคัญที่เราจะต้องรู้คือชื่อของวิธีการคำนวณงาน