本文實例講述了PHP面向對象程序設計繼承用法。分享給大家供大家參考,具體如下:
<?php//繼承是子類(派生類)從父類(基類,超類)繼承屬性和方法。//子類也可以有自己的屬性和方法。//一個父類可以被多個子類繼承。//如果想修改父類的方法,只能在子類里重寫這個方法,這也是多態的體現。//用if($obj instanceof SomeClass){}來檢查一個對象是否屬于一個類。//如果$name是protected,private訪問權限,那么將不能在類外被直接訪問。//如果$name是private訪問權限,那么將只能在自身類里訪問。//如果$name是protected訪問權限,可以自身類里訪問,也可以在子類里訪問。//__construct()是類的構造函數,在創建對象實例時,自動訪問該函數,子類也有自己的構造函數。//子類沒有構造函數時,在創建對象時,會調用父類的構造函數。//子類有構造函數時,不用在調用父類的構造函數,除非有parent顯式調用時,才去調用父類的構造函數。//程序結束時,或者用unset()對象時,會調用析構函數。//如果類里定義了final的方法,那么此方法將不能被子類重寫。//如果類聲明了final,那么此類不能被繼承。//作為慣例,私有的變量名通常以一個下劃線開始。//如果一個類的方法只能被它自己調用,那么可以設置為受保護的或者私有的。//$this引用當前對象的實例,self被用作當前類的一個引用。//靜態屬性和類常數只能用類名、parent、self來訪問//函數名不區分大小寫,變量區分大小寫。class Employees{ protected $name = null; public static $count = 0; function __construct($nameStr){ $this->name = $nameStr; echo "<p>$this->name : ",self::$count," : parent : __construct</p>"; } function work(){ echo "<p>$this->name is working</p>"; } function __destruct(){ echo "<p>parent unset $this->name</p>"; }}class Managers extends Employees{ private $pos = null; function __construct($p,$nameStr){ parent::$count++; parent::__construct($nameStr); $this->pos = $p; echo "<p>$this->name , $this->pos : self : __construct</p>"; } function assignJob(){ echo "<p>$this->name assign jobs</p>"; } function getName(){ return $this->name; } function __destruct(){ echo "<p>self unset $this->name</p>"; }}class Programmers extends Employees{ function code(){ echo "<p>$this->name is coding</p>"; } function getName(){ return $this->name; }}$e1 = new Employees('e1');$e2 = new MAnagers(2,'e2');$e3 = new Programmers('e3');$e1->work();$e2->work();$e3->work();$e2->assignJob();$e3->Code();echo "<p>{$e3->getName()}</p>";//echo "<p>$e1->name</p>";if($e2 instanceof Employees){ echo "<p>ok</p>";}else{ echo "<p>no</p>";}unset($e1,$e2,$e3);
運行結果:
e1 : 0 : parent : __construct
e2 : 1 : parent : __construct
e2 , 2 : self : __construct
e3 : 1 : parent : __construct
e1 is working
e2 is working
e3 is working
e2 assign jobs
e3 is coding
e3
ok
parent unset e1
self unset e2
parent unset e3
希望本文所述對大家PHP程序設計有所幫助。
新聞熱點
疑難解答
圖片精選