1. 程式人生 > >php面向物件之private、protected、public三者許可權控制區別

php面向物件之private、protected、public三者許可權控制區別


        private     protected       public
本類內     Y           Y              Y
子類內     N           Y              Y
外部       N           N              Y

注意:
在java中,如果屬性/方法前面不寫任何引數
即public/protected/private都不寫,也是可以的,friendly

在PHP中,如果public/protected/private 都不寫,
則理解為 public 建議養成好習慣,不要不寫

class Human
{
private $name = 'zhangsan'; protected $money = 3000; public $age = 28; public function say() { echo '我叫',$this->name,'<br />'; echo '我有',$this->money,'元錢<br />'; echo '我今年',$this->age,'歲'; } } class Stu extends Human { private $friend
= '小花'; public function talk() { echo '我叫',$this->name,'<br />'; echo '我有',$this->money,'元錢<br />'; echo '我今年',$this->age,'歲<br />'; } } $ming = new Stu(); echo $ming->age,'<br />'; // 28 echo $ming->friend; //出錯:因為類外不能呼叫private
echo $ming->money; //出錯:因為類外不能呼叫protected屬性 $ming->talk(); /** 出錯: Notice: Undefined property: Stu::$name in 。。。 我有3000元錢 我今年28歲 分析原因: Undefined property: Stu::$name 這是說明:stu物件 沒有name屬性 但昨天說,私有的不是可以繼承嗎? 是可以繼承過來,但系統有標記,標記其為父類層面的私有屬性. 因此無權呼叫,導致此錯發生. 可以分析出: protected 可以在 子類內訪問 protected能在子類訪問,本類內能否訪問? 答:當然可以