1.public定義的類或方法;任何類的實例均可以訪問php
2.private定義的屬性和方法;只能該類內部使用;若是子類要訪問父類的private屬性;必須實現__set()和__get()方法;this
3.protected定義的屬性和方法;該本類和子類或者父類內部使用。實例對象不能夠訪問;spa
<?php class a { private $c=100; private $name = 'wang san'; public $age=200; //設置私有屬性 public function __set($a,$val){ echo "屬性:{$a} 值: {$val} 在直接設置私有屬性值的時候,自動調用了這個__set()方法爲私有屬性賦值<br>"; $this->$a = $val; } //獲取私有屬性 public function __get($a){ echo "屬性:{$a} 在直接獲取私有屬性值的時候,自動調用了這個__get()方法<br>"; return $this->$a; } private function getAge(){ echo "我是父類私有的private"; } protected function getName(){ echo "我是父類保護性方法的protected"; } function getALL(){ echo "我是父類public方法"; } } $a = new a(); echo $a->age.'<br>'; $a->name = '中國'; //必須實現了魔術方法__set 和 __get方法 實例對象才能夠訪問 echo $a->name.'<br>'; //輸出:中國 class b extends a { public function getName2(){ $this->getName();//子類內部可使用;可是外部不可使用 } public function getAge2(){ $this->getAge(); //報錯 不容許子類內部使用 } } $b = new b(); $b->name = 22; echo $b->name.'<br>'; //echo $b->getAge(); //錯誤 子類對實例對象 不能夠是使用 //echo $b->getName(); //錯誤 子類對實例對象 不能夠是使用 echo $b->getName2(); //可使用;子類對實例對象 能夠內部使用 //echo $b->getAge2(); //錯誤 子類對實例對象 能夠內部使用
輸出:code