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

PHP 面向對象:深入解析 public、private、protected 訪問修飾符

     編輯:PHP 相關知識

在 PHP 面向對象程式設計中,訪問修飾符是控制類成員(屬性與方法)可見性的關鍵機制。PHP 提供了三種訪問修飾符:public(公有)、protected(受保護) 和 private(私有)。正確理解並使用它們,能有效實現封裝,提升代碼的安全性與可維護性。

三種訪問修飾符詳解

1. public(公有,默認值)

若類成員未顯式聲明訪問修飾符,PHP 5 預設為 public。被聲明為 public 的屬性或方法,在任何位置均可訪問——類內部、子類、以及類外部(通過對象實例)。

2. protected(受保護)

受保護成員僅允許在當前類及其子類中訪問。類外部無法直接通過對象實例存取。這適合用於「內部邏輯,但需允許繼承擴展」的場景。

3. private(私有)

私有成員僅在定義它的類內部可見。子類無法繼承、覆寫或訪問父類的 private 成員;類外部當然也無法存取。這是封裝性最強的級別,適合隱藏核心實現細節。

圖解訪問權限對比

PHP 訪問修飾符權限對比圖

代碼示例:實戰演練

<?php
class Woman {
    public $name = "gaojin";
    protected $age = "22";
    private $height = "170";

    function info() {
        echo $this->name; // 類內部可訪問所有成員
    }

    private function say() {
        echo "這是私有的方法";
    }
}

class Girl extends Woman {
    function info() {
        echo $this->name;  // 繼承自父類 public,可訪問
        echo $this->age;   // 繼承自父類 protected,可訪問
        // echo $this->height; // 錯誤:private 不被繼承,不可訪問
    }

    function say() {
        // parent::say(); // 錯誤:父類私有方法不可被繼承調用
        echo "我是女孩";
    }
}

$g = new Girl();
$g->say();        // 正常輸出「我是女孩」
// echo $g->height; // 錯誤:私有屬性外部不可訪問
// $g->info();     // 輸出 gaojin22(height 為私有,不輸出)
?>

關鍵要點總結

  • public:無限制,隨處可用。
  • protected:類內 + 子類可用,外部不可用。
  • private:僅當前類可用,子類與外部均不可用。
  • 子類可以重寫(override)父類的 public/protected 方法,但不能重寫 private 方法(因不可見)。
  • 若子類聲明同名 private 屬性,屬於新定義,與父類無關。

合理運用訪問修飾符,遵循「最小權限原則」——預設用 private,需繼承時改 protected,確需對外暴露才用 public,能讓你的 PHP 類結構更清晰、更安全。

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