PHP OOP - 介面
PHP - 什麼是介面?
介面允許您指定一個類應該實現哪些方法。
介面使得以相同的方式使用各種不同的類變得容易。當一個或多個類使用同一個介面時,這被稱為“多型”。
介面使用 interface
關鍵字宣告
語法
<?php
interface InterfaceName {
public function someMethod1();
public function someMethod2($name, $color);
public function someMethod3() : string;
}
?>
PHP - 介面與抽象類的區別
介面與抽象類相似。介面與抽象類的區別在於:
- 介面不能有屬性,而抽象類可以。
- 介面中的所有方法都必須是 public,而抽象類的方法可以是 public 或 protected。
- 介面中的所有方法都是抽象的,因此它們不能在程式碼中實現,並且不需要 abstract 關鍵字。
- 類可以實現一個介面,同時繼承另一個類。
PHP - 使用介面
要實現一個介面,類必須使用 implements
關鍵字。
實現介面的類必須實現介面中的所有方法。
示例
<?php
interface Animal {
public function makeSound();
}
class Cat implements Animal {
public function makeSound() {
echo "Meow";
}
}
$animal = new Cat();
$animal->makeSound();
?>
自己動手試一試 »
在上面的示例中,假設我們要編寫一個管理一群動物的軟體。所有動物都可以執行某些操作,但每種動物執行的方式不同。
使用介面,我們可以編寫一些程式碼,這些程式碼可以適用於所有動物,即使每種動物的行為方式不同。
示例
<?php
// Interface definition
interface Animal {
public function makeSound();
}
// Class definitions
class Cat implements Animal {
public function makeSound() {
echo " Meow ";
}
}
class Dog implements Animal {
public function makeSound() {
echo " Bark ";
}
}
class Mouse implements Animal {
public function makeSound() {
echo " Squeak ";
}
}
// Create a list of animals
$cat = new Cat();
$dog = new Dog();
$mouse = new Mouse();
$animals = array($cat, $dog, $mouse);
// Tell the animals to make a sound
foreach($animals as $animal) {
$animal->makeSound();
}
?>
自己動手試一試 »
示例解釋
Cat, Dog 和 Mouse 都是實現 Animal 介面的類,這意味著它們都可以使用 makeSound()
方法來發出聲音。因此,我們可以遍歷所有動物並讓它們發出聲音,即使我們不知道每種動物的具體型別。
由於介面並不規定類如何實現該方法,因此每種動物都可以以自己的方式發出聲音。