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

PHP 介面完整教學:定義、實作、多介面與介面繼承

     編輯:PHP 綜合知識

介面定義規範(方法簽章),不含實作,支援多重實作與介面繼承,體現多態與高內聚低耦合設計。

基本語法

interface 介面名 {
    // 常數
    // 方法簽章(無主體)
}
class 類別名 implements 介面1, 介面2 ... { ... }

核心規則

  1. 介面方法不能有主體,預設 public。
  2. 介面不可實例化。
  3. 類別實作介面時必須實作所有方法。
  4. 介面可定義常數(const NAME = 值;),預設 public,存取方式 介面名::常數名。
  5. 介面不能繼承類別,但可繼承多個介面(interface A extends B, C)。
  6. 類別可同時 extends 父類別 implements 介面1, 介面2。

範例 1:USB 介面規範

<?php
interface iUsb { public function start(); public function stop(); }
class Camera implements iUsb {
    public function start(){ echo "相機啟動<br/>"; }
    public function stop(){ echo "相機停止<br/>"; }
}
class Phone implements iUsb {
    public function start(){ echo "手機啟動<br/>"; }
    public function stop(){ echo "手機停止<br/>"; }
}
$c=new Camera(); $c->start(); $c->stop();
$p=new Phone(); $p->start(); $p->stop();
?>

範例 2:介面常數

interface iUsb { const A = 90; }
echo iUsb::A; // 90

範例 3:介面繼承多介面

interface iUsb2 { public function a(); }
interface iUsb3 { public function b(); }
interface iUsb extends iUsb2, iUsb3 { const A=90; }
class Class1 implements iUsb {
    public function a(){}
    public function b(){}
    public function test(){}
}
echo iUsb::A;

介面 vs 繼承

  • PHP 單一繼承,介面實作可補充功能擴展而不破壞繼承鏈。
  • 適用於:定義規範、多類別平級實作同一功能但邏輯不同。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved