public: 公有屬性或方法
在子類別中可以透過self::var 或self::method 來呼叫,可以透過parent::method來呼叫父類別中的方法,但不能呼叫公有屬性.
在實例中可以透過$obj->var或self::method 來呼叫
protected: 受保護類型
#在子類別中可以透過self::var 或self::method呼叫, 可以透過parent::method來呼叫父類別中的方法
在實例中不能透過$obj->var 來呼叫 protected類型的方法或屬性
private: 私有類型
該類型的屬性或方法只能在該類別中使用,在該類別的實例、子類別中、子類別的實例中都不能調用私有類型的屬性和方法
2.self 和parent 的區別
a).在子類別中常用到這兩個物件。他們的主要差異在於self可以呼叫父類別中的公有或受保護的屬性,但parent不可以呼叫
b).self:: 它表示目前類別的靜態成員(方法與屬性) 與$this 不同,$this是指當前物件
<?php class BaseClass { public $public = 'public'; private $private = 'private'; protected $protected = 'protected'; function construct(){ } function print_var(){ print $this->public;echo '<br />'; print $this->private; echo '<br />'; print $this->protected; echo '<br />'; } } class Subclass extends BaseClass { // public $public = 'public2'; protected $protected ='protected2'; function construct(){ echo $this->protected;//可以访问,因为类中定义为受保护的,所以在本类或子类中可以,子类中还可以重复付值 echo '<br />'; echo $this->private;//error 因为是私有的只有在定义她的类baseclass中可以用 } } $obj1 = new BaseClass(); $obj1->print_var(); //echo $obj1->protected;//error 因为是受保护的,只有在本类内部或子类父类中可以调用 //echo $obj1->private;//error 同上私有的,只有在本类内调用 echo $obj1->public; echo "<hr />"; $obj2 = new Subclass(); echo '<br />'; echo $obj2->public;echo '<br />'; echo $obj2->protected; //echo $obj2->private;//error //echo $obj2->protected;//error ?>
總結
public 表示全域,類別內部外部子類別都可以存取;
private表示私有的,只有本類別內部可以使用;
protected表示受保護的,只有本類別或子類別或父類別中可以存取;
以上是php中public,private,protected屬性的定義、用法、區別實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!