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!