解释PHP中的多态性。

首先,多态是从希腊语Poly(表示很多)和morphism(表示形式)中获得的。

多态描绘了面向对象编程中的一个示例,在该示例中,具有相似功能的各个类中的方法应具有相似的名称。多态本质上是一种OOP模式,它使具有不同功能的多个类可以执行或共享commonInterface。多态性的用处在于,用不同的类编写的代码不会影响该类所属的类,因为它们以相同的方式使用。为了确保这些类确实实现了多态性准则,我们可以在抽象类或接口的两种选择之一之间进行选择。

因此,让我们在接口的帮助下实现多态原则。

接口接口类似于类,但接口不能包含代码。接口可以定义方法名称和参数,但不能定义方法的内容。任何执行接口的类都必须执行该接口所表征的所有方法。

例:

<?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类通过定义callTask()内部带有相应主体的方法来实现接口。矩形类还实现了Machine接口,但定义的方法calcTask()的主体与圆形类的CalTask()方法不同。多态性准则指出,对于这种情况,所有用于计算任务的方法都具有相同的名称。现在,无论何时需要为不同的类计算Task,我们都将调用名称为calcTask()无需过多考虑如何为另一台计算机实际计算任务的细节。我们需要知道的主要事情是计算Task的方法的名称。