PHP中的多态性解释[带示例]

已发表: 2021-02-19

PHP 编程语言遵循面向对象编程 (OOP) 范式以及其他基本结构。 OOP 最重要的特征之一是多态性。 一般而言,多态性源自希腊词poly,意思是多,态射意思是形式。 OOP 中的多态性是一个概念,它允许您在单个接口中创建具有不同功能的类。

一般来说,它有两种类型:编译时(重载)和运行时(覆盖),但 PHP 中的多态不支持重载,也就是编译时多态。 PHP 中多态性最显着的好处是您不必担心定义在哪个类中编写哪些代码的技术细节,因为所有代码都将以相同的方式使用。

面向对象的 PHP多态性的一个易于理解的示例是不同几何形状的区域。 有许多形状具有不同的长度、宽度、半径和其他参数,但所有图形都会有一个区域。 如果您不理解它,请不要担心,因为我们将查看 PHP 中的各种多态示例以更好地理解这个概念以及如何实现它。

目录

如何在 PHP 中实现多态性?

PHP 中的多态可以通过使用接口或抽象类来实现。 我们将查看示例以两种方式强制执行它。

在接口中实现的 PHP 中的多态示例

您可以将接口视为扩展它的所有类的蓝图。 它们类似于只有一个主要区别的类。 您可以在接口中声明和定义方法名称和参数,但不能编写方法代码。 任何实现接口的类都将实现它的所有方法。 接口的语法是:

接口示例接口{

公共函数方法名();

}

既然你已经了解了接口,那么让我们看看如何在 PHP 中在接口中实现多态。

<?php

接口 ShapeExmp{

公共函数 calcArea();

}

类 SquareExmp 实现 ShapeExmp{

私人 $side;

公共函数 __construct($side){

$this->side = $side;

}

公共函数 calcArea(){

$area = $this->side * $this->side;

echo "正方形面积 = ".$area;

}

}

类 RectangleExmp 实现 ShapeExmp{

私人 $width1;

私人$高度1;

公共函数 __construct($width1,$height1){

$this->width1 = $width1;

$this->height1 = $height1;

}

公共函数 calcArea(){

$area = $this->width1 * $this->height1;

echo "<br>矩形面积 = ".$area;

}

}

类 TriangleExmp 实现 ShapeExmp{

私人 $cons1;

私人 $width1;

私人$高度1;

公共函数 __construct($cons1,$width1,$height1){

$this->cons1 = $cons1;

$this->width1 = $width1;

$this->height1 = $height1;

}

公共函数 calcArea(){

$area = $this->cons1 * $this->width1 * $this->height1;

echo "<br>三角形面积= ".$area;

}

}

$squ = 新 SquareExmp(8);

$squ->calcArea();

$rect = new RectangleExmp(10,15);

$rect->calcArea();

$tri = new TriangleExmp(0.5,10,12);

$tri->calcArea();

?>

输出:

正方形面积 = 64

矩形面积 = 150

三角形面积= 3

如您在上面的示例中所见,我们通过接口在 PHP 中实现了多态性。 我们已经构造并得到了三种形状的面积:正方形、三角形和矩形。 实现的类不断变化,参数也不断变化,但结果始终是形状的区域。 同样,您还可以构造和计算其他形状的面积,例如圆形、平行四边形、椭圆形等。

抽象类中实现的 PHP 多态示例

PHP 中的抽象类是定义了方法但没有定义代码的父类。 它们是在“抽象”关键字的帮助下定义的。 您只能使用它们来继承其他类。 每个抽象类都有一个或多个抽象方法。 这些类要求它们的子类使用相同的名称填充方法。 因此,不同的子类以相同的方式使用这些方法,从而在 PHP 中实现多态性。 让我们通过 PHP 中的多态示例来更好地理解这一点。

<?php

抽象类 shapeExmp{

抽象受保护函数 calcArea();

}

类 rectangleExmp 扩展 shapeExmp{

变量 $x,$y;

公共函数 __construct($x, $y){

$这个->x=$x;

$this->y=$y;

}

公共函数 calcArea(){

$a=$this->x*$this->y;

返回$a;

}

}

类 circleExmp 扩展 shapeExmp{

变量 $r;

公共函数 __construct($r){

$this->r=$r;

}

公共函数 calcArea(){

$pi=3.142;

$a=pow($this->r,2)*$pi;

返回$a;

}

}

类 squareExmp 扩展 shapeExmp{

变量 $s;

公共函数 __construct($s){

$this->s=$s;

}

公共函数 calcArea(){

$a=$this->s * $this->s;

返回$a;

}

}

$rect=新的矩形Exmp(8,10);

$area=$rect->calcArea();

echo "矩形区域= $area <br>";

$circ=new circleExmp(5);

$area=$circ->calcArea();

echo “圆面积=$area<br>”;

$squ=新的 squareExmp(7);

$area=$squ->calcArea();

echo “平方面积= $area <br>”;

?>

输出:

矩形面积= 80

圆形面积=78.55

正方形面积=49

如您在上面的示例中所见,我们首先创建了一个抽象类 shapeExmp。 然后我们在其中定义了一个抽象函数 calcArea()。 为了计算圆形、矩形和正方形的面积,我们从抽象类派生了这些类,并使用了抽象函数 calcArea()。 类似地,您可以使用抽象类在 PHP 中实现多态性并在运行时使用它。

结帐: Github 上的 PHP 项目

从世界顶级大学在线学习软件课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

结论

这将消除您对 PHP 中的多态性的所有疑虑。 您可以在任何 IDE 或在线 PHP 编译器的帮助下尝试以不同的方式使用它。 PHP 已经发展成为一种流行的编程语言。 PHP中有许多职业机会 它非常适合交互式Web 开发,并且对于学习成为全栈开发人员至关重要。

如果您想从事全栈开发职业,可以查看全栈软件开发课程中的 upGrad 和 IIIT-B 执行 PG 计划。 该课程为您提供 16 种不同的编程语言和工具的教育。 在课程期间完成 9 多个项目作业,upGrad 为您提供安置保证。 它为您提供 500 多个小时的培训材料,帮助您学习如何构建强大且可扩展的网站和应用程序。

什么是面向对象编程?

什么是编程中的多态性?

多态性是具有不止一种形式的能力。 例如,一条狗有 4 条腿,但腿是不同的。 这是同一对象的不同形式。 在计算机编程中,多态性是具有不同输入和单一输出的能力。 例如,我们可以有一个 Person、Worker 和 Customer 类,每个人都有不同的输入。 他们有不同的输入,因为每个人都有不同的姓名、地址和电话号码。 但是,它们的输出都是相同的,即 Person 类。

类和对象在编程中是如何工作的?

类是面向对象编程 (OOP) 的基本单元。 它们是对象的蓝图,因此它们用于创建对象和定义对象的行为。 类可以被认为是 OOP 的通用构建块。 它们用于创建特定于特定任务或情况的对象。 然而,与现实世界不同的是,类几乎可以在任何时间以任何顺序创建。 您甚至可以在知道如何使用它之前创建一个类——这个过程称为“匿名”类实例化。