Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

อธิบาย Polymorphism ใน PHP


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