本文實(shí)例講述了PHP面向?qū)ο蟪绦蛟O(shè)計(jì)繼承用法。分享給大家供大家參考,具體如下:
?php
//繼承是子類(派生類)從父類(基類,超類)繼承屬性和方法。
//子類也可以有自己的屬性和方法。
//一個(gè)父類可以被多個(gè)子類繼承。
//如果想修改父類的方法,只能在子類里重寫這個(gè)方法,這也是多態(tài)的體現(xiàn)。
//用if($obj instanceof SomeClass){}來檢查一個(gè)對象是否屬于一個(gè)類。
//如果$name是protected,private訪問權(quán)限,那么將不能在類外被直接訪問。
//如果$name是private訪問權(quán)限,那么將只能在自身類里訪問。
//如果$name是protected訪問權(quán)限,可以自身類里訪問,也可以在子類里訪問。
//__construct()是類的構(gòu)造函數(shù),在創(chuàng)建對象實(shí)例時(shí),自動訪問該函數(shù),子類也有自己的構(gòu)造函數(shù)。
//子類沒有構(gòu)造函數(shù)時(shí),在創(chuàng)建對象時(shí),會調(diào)用父類的構(gòu)造函數(shù)。
//子類有構(gòu)造函數(shù)時(shí),不用在調(diào)用父類的構(gòu)造函數(shù),除非有parent顯式調(diào)用時(shí),才去調(diào)用父類的構(gòu)造函數(shù)。
//程序結(jié)束時(shí),或者用unset()對象時(shí),會調(diào)用析構(gòu)函數(shù)。
//如果類里定義了final的方法,那么此方法將不能被子類重寫。
//如果類聲明了final,那么此類不能被繼承。
//作為慣例,私有的變量名通常以一個(gè)下劃線開始。
//如果一個(gè)類的方法只能被它自己調(diào)用,那么可以設(shè)置為受保護(hù)的或者私有的。
//$this引用當(dāng)前對象的實(shí)例,self被用作當(dāng)前類的一個(gè)引用。
//靜態(tài)屬性和類常數(shù)只能用類名、parent、self來訪問
//函數(shù)名不區(qū)分大小寫,變量區(qū)分大小寫。
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);
運(yùn)行結(jié)果:
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
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- PHP面向?qū)ο笕筇攸c(diǎn)學(xué)習(xí)(充分理解抽象、封裝、繼承、多態(tài))
- 詳解php中的類與對象(繼承)
- php面向?qū)ο笕ヂ?(七) 繼承性
- PHP入門教程之面向?qū)ο蟮奶匦苑治?繼承,多態(tài),接口,抽象類,抽象方法等)
- PHP面向?qū)ο蟪绦蛟O(shè)計(jì)高級特性詳解(接口,繼承,抽象類,析構(gòu),克隆等)
- PHP面向?qū)ο罄^承用法詳解(優(yōu)化與減少代碼重復(fù))
- PHP面向?qū)ο蟪绦蛟O(shè)計(jì)OOP繼承用法入門示例
- PHP面向?qū)ο蟪绦蛟O(shè)計(jì)之接口的繼承定義與用法詳解
- PHP學(xué)習(xí)記錄之面向?qū)ο螅∣bject-oriented programming,OOP)基礎(chǔ)【類、對象、繼承等】
- PHP 對象繼承原理與簡單用法示例