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 的通用構建塊。 它們用於創建特定於特定任務或情況的對象。 然而,與現實世界不同的是,類幾乎可以在任何時間以任何順序創建。 您甚至可以在知道如何使用它之前創建一個類——這個過程稱為“匿名”類實例化。