解释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.