PHP面向對象——訪問修飾符

   PHP面向對象——訪問修飾符

 PHP中有三種訪問修飾符,分別是:

  • public(公共的、默認)
  • protected(受保護的)
  • private(私有的)

    它們可以分別用在類的屬性和方法上(類的屬性和方法統稱爲類的成員),用來修飾類成員的訪問權限。   

public(公共的、默認)

    在PHP5中如果類沒有指定成員的訪問修飾符,默認就是public的訪問權限。

/*
以下兩個方法聲明訪問權限效果相同
*/
function say(){};
publilc function say(){};

    當類的成員被聲明爲public的訪問修飾符時,該成員能被外部代碼訪問和操作。

private(私有的)

     被定義爲private的成員,對於類內部所有成員都可見,沒有訪問限制。對類外部不允許訪問。

protected(受保護的)

      protected稍微有點複雜,被聲明爲protected的成員,只允許該類的子類進行訪問。

 

     訪問權限情況表:

訪問權限

public

protected

private

所有

子類

類內

以下面的例子總結:

複製代碼
<?php
class Woman{
    public $name = 'lisa'; // 公共的訪問權限
    protected $money = 3000.00; // 受保護的權限
    private $age = 35; // 私有的訪問權限
    
    function printInfo(){
        echo $this->name; 
        echo $this->money;
        echo $this->age;
    }

    private function secret(){
        echo "這是個祕密!";
    }
}

$woman = new Woman();
echo $woman->name; // 公共屬性可以訪問
// echo $woman->money; // 受保護屬性,報致命錯誤
// echo $woman->age; // 私有屬性,報致命錯誤

$woman->printInfo(); // 可以打印三個屬性的信息,因爲printInfo是公共方法

// $woman->secret(); // 私有方法,訪問出錯

class Girl extends Woman{
// 可以重新定義父類的public和protected方法,但不能定義private的
    // protected $money = 2000.00; // 可以從新定義

    function printInfo(){
        echo $this->name; 
        echo $this->money; 
        // echo $this->age; // 找不到屬性
    }
}

$girl = new Girl();
echo $girl->name; // 公共屬性可以訪問
// echo $girl->money; // 受保護屬性,報致命錯誤
// echo $girl->age; // 私有屬性,找不到屬性
$girl->printInfo(); // 顯示$name,$money,找不到$age屬性;
?>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章