解释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的方法的名称。