解釋PHP中的多型性。


首先,多型性源於希臘詞Poly(意思是“多”)和morphism(意思是“形態”)。

多型性描述了面向物件程式設計中的一種現象,其中不同類中的方法執行類似操作應該具有相同的名稱。多型性本質上是一種OOP模式,它允許許多具有不同功能的類實現或共享一個公共介面。多型性的優點是,在不同類中編寫的程式碼與其所屬的類無關,因為它們的使用方式相同。為了確保類實現多型性準則,我們可以選擇抽象類或介面中的一個。

那麼,讓我們藉助介面來實現多型性原則。

介面 介面類似於類,但它不能包含程式碼。介面可以定義方法名和引數,但不能定義方法的內容。實現介面的任何類都必須實現介面中定義的所有方法。

示例

<?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

解釋

名為“Machine”的介面要求所有實現它的類都定義一個名為calcTask()的抽象方法。相應地,Circle類透過定義帶有相應主體程式碼的calcTask()方法來實現該介面。Rectangle類也實現了Machine介面,但是它定義的calcTask()方法與Circle類中calcTask()方法的主體程式碼不同。多型性準則指出,在這種情況下,所有計算任務的方法都應該具有相同的名稱。現在,無論何時我們需要為不同的類計算任務,我們都將呼叫名為calcTask()的方法,而無需過多考慮如何為不同的機器實際計算任務的細節。我們唯一需要知道的是計算任務的方法名稱。

更新於:2019年7月30日

11K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.