首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 介面與抽象類完整指南:定義、實作、多重實作與繼承關係

     編輯:PHP 相關知識

介面與抽象類是 PHP 物件導向設計的核心契約機制。本文系統整理其語法、規則、異同與實戰模式。

介面

  • 關鍵字:interface
  • 成員:僅允許 public 抽象方法與常數(const)。
  • 方法無需加 abstract 關鍵字。
  • 類別用 implements 實作,可多重實作(逗號分隔)。
<?php
interface Logger {
    const LEVEL_DEBUG = 1;
    public function log(string $message, int $level = self::LEVEL_DEBUG);
    public function emergency(string $message);
}
?>

抽象類

  • 關鍵字:abstract class
  • 可包含抽象方法(需加 abstract)與具體方法、屬性、建構子。
  • 不可實例化,需被繼承。
  • 單一繼承(extends),但可同時 implements 多個介面。
<?php
abstract class BaseLogger implements Logger {
    protected string $prefix = '[APP]';
    
    public function log(string $message, int $level = self::LEVEL_DEBUG) {
        $this->write($this->format($message, $level));
    }
    
    abstract protected function write(string $formatted): void;
    
    private function format(string $msg, int $level): string {
        return "{$this->prefix} [L$level] $msg";
    }
}
?>

組合模式

模式語法說明
普通類實作介面class A implements I1, I2需實作所有介面方法
抽象類實作介面abstract class A implements I1可延遲實作給子類
繼承父類並實作介面class A extends Base implements I1, I2單一繼承+多重實作
介面繼承介面interface I3 extends I1, I2合併契約,實作類需滿足所有

選擇原則

  • 介面:定義「能做什麼」(能力契約),如 Serializable、Countable、Logger。
  • 抽象類:定義「是什麼」(領域模型骨架),共享程式碼、強制流程模板(Template Method 模式)。
  • 優先使用介面,需共享實作時再引入抽象類。

善用介面與抽象類,能建立低耦合、高內聚、易測試、易擴充的系統架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved