HOWTO · PHP

PHP 抽象類

本教程演示瞭如何在 PHP 中建立和使用抽象類。

本頁內容

抽象類是具有至少一種抽象方法的類。本教程演示如何在 PHP 中建立和使用抽象類。

PHP 抽象類

在 PHP 中,抽象類是使用 abstract 關鍵字宣告的,這與 C++ 不同。抽象類應該至少包含一個沒有任何實際程式碼的抽象方法;此方法只有用 abstract 關鍵字宣告的名稱和引數。

抽象類的目的是提供一種模板來繼承並強制繼承類實現抽象方法。抽象類介於純介面和普通類之間。

介面也可以是抽象類的特殊情況,其中每個方法都是抽象的。抽象類永遠不能被例項化,如果任何類包含一個抽象方法,則該類必須是抽象的。

抽象類的語法是:

<?php
abstract class Demo
{
   abstract function Method_Name(Parameters);
}
?>

此語法使用抽象方法 Method_Name 建立一個抽象類。

讓我們嘗試一個 PHP 中抽象類的示例:

<?php
// Parent abstract class
abstract class Employee {
    public $Employee_Name;
    public function __construct($Employee_Name) {
        $this->name = $Employee_Name;
    }
    abstract public function intro() : string;
}

// Child classes
class Jack extends Employee {
    public function intro() : string {
        return "Hello I am Project Manager at Delftstack! My Name is $this->name!";
    }
}

class Michelle extends Employee {
    public function intro() : string {
        return "Hi I am Human Resource Manager at Delftstack! My Name is $this->name!";
    }
}

class John extends Employee {
    public function intro() : string {
        return "Hey I am a Senior Developer at Delftstack! My Name is $this->name!";
    }
}

// Create objects from the child classes of abstract class
$Jack = new Jack("Jack");
echo $Jack->intro();
echo "<br>";

$Michelle = new Michelle("Michelle");
echo $Michelle->intro();
echo "<br>";

$John = new John("John");
echo $John->intro();
?>

Jack、Michelle 和 John 是從抽象類 Employee 繼承的,這意味著他們可以使用公共 Employee_Name 屬性和 Employee 抽象類的公共 __construct 方法,只是因為繼承。但是 intro() 是抽象方法,這就是它在所有類中定義的原因。

檢視程式碼的輸出:

Hello I am Project Manager at Delftstack! My Name is Jack!
Hi I am Human Resource Manager at Delftstack! My Name is Michelle!
Hey I am a Senior Developer at Delftstack! My Name is John!