interface One {
const CONSTANT = 'value';
public function fun1();
public function fun2();
}
private 或 protected。const),不可定義變數屬性。interface Two extends One {
public function fun3();
public function fun4();
}
使用 extends 關鍵字,子介面繼承父介面所有抽象方法與常數。
class Three implements One {
public function fun1() { /* ... */ }
public function fun2() { /* ... */ }
}
$obj = new Three(); // 實作完所有抽象方法才能實例化
使用 implements 關鍵字。一個類別可實作多個介面:
class Four implements One, Two, ThreeInterface {
// 必須實作所有介面的所有抽象方法
}
abstract class AbstractFive implements One {
public function fun1() { /* ... */ }
// fun2 留給子類別實作
}
class ConcreteFive extends AbstractFive {
public function fun2() { /* ... */ }
}
$obj = new ConcreteFive();
class Six extends BaseClass implements One, Two {
// 先 extends 再 implements
// 實作所有介面方法
}
PHP 單一繼承、多重實作,符合「一個父類、多個規範」的設計原則。