PHP抽象類(lèi)基本用法示例
本文實(shí)例講述了PHP抽象類(lèi)基本用法。分享給大家供大家參考,具體如下:
<?php
//抽象類(lèi)像一個(gè)模板,供子類(lèi)擴(kuò)展(重寫(xiě)),抽象類(lèi)里有普通方法(有方法體),也有抽象方法,其中抽象方法沒(méi)有方法體,且以分號(hào)結(jié)束。
//只要有一個(gè)抽象方法,那么此類(lèi)必須定義為抽象類(lèi)。
//抽象類(lèi)不能創(chuàng)建自己的實(shí)例,在試圖創(chuàng)建抽象類(lèi)對(duì)象時(shí),會(huì)產(chǎn)生一個(gè)致使錯(cuò)誤。
//在子類(lèi)里實(shí)現(xiàn)抽象類(lèi)的方法,并且可見(jiàn)性要等于、高于抽象方法的可見(jiàn)性,抽象類(lèi)(public|protected|private),子類(lèi)(public|public,protected|有致命錯(cuò)誤,且不能被繼承)。
//抽象類(lèi)不能定義私有方法,可以定義私有屬性。
//如果子類(lèi)沒(méi)有擴(kuò)展(重寫(xiě))抽象類(lèi)的抽象方法,會(huì)產(chǎn)生致使錯(cuò)誤。
abstract class Employees{
protected $name = null;
function __construct($nameStr){
$this->name = $nameStr;
}
abstract public function work();
public function work1(){
echo "<p>$this->name</p>";
}
//function __destruct(){}
}
class Managers extends Employees{
public function __construct($nameStr){
parent::__construct($nameStr);
}
/*public function work(){//如果子類(lèi)沒(méi)有擴(kuò)展(重寫(xiě))抽象類(lèi)的抽象方法,會(huì)產(chǎn)生致使錯(cuò)誤。
echo "<p>$this->name is working</p>";
}*/
}
//$obj1 = new Employees();//創(chuàng)建抽象類(lèi)對(duì)象時(shí),會(huì)產(chǎn)生一個(gè)致使錯(cuò)誤。
$obj2 = new Managers('e2');
//$obj2->work();
運(yùn)行上述代碼,會(huì)提示如下錯(cuò)誤信息:
Fatal error: Class Managers contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Employees::work) in D:\phproot\test\ClassDemo.php on line 26
將錯(cuò)誤提示位置及末尾位置代碼注釋刪除后,改為如下代碼:
<?php
//抽象類(lèi)像一個(gè)模板,供子類(lèi)擴(kuò)展(重寫(xiě)),抽象類(lèi)里有普通方法(有方法體),也有抽象方法,其中抽象方法沒(méi)有方法體,且以分號(hào)結(jié)束。
//只要有一個(gè)抽象方法,那么此類(lèi)必須定義為抽象類(lèi)。
//抽象類(lèi)不能創(chuàng)建自己的實(shí)例,在試圖創(chuàng)建抽象類(lèi)對(duì)象時(shí),會(huì)產(chǎn)生一個(gè)致使錯(cuò)誤。
//在子類(lèi)里實(shí)現(xiàn)抽象類(lèi)的方法,并且可見(jiàn)性要等于、高于抽象方法的可見(jiàn)性,抽象類(lèi)(public|protected|private),子類(lèi)(public|public,protected|有致命錯(cuò)誤,且不能被繼承)。
//抽象類(lèi)不能定義私有方法,可以定義私有屬性。
//如果子類(lèi)沒(méi)有擴(kuò)展(重寫(xiě))抽象類(lèi)的抽象方法,會(huì)產(chǎn)生致使錯(cuò)誤。
abstract class Employees{
protected $name = null;
function __construct($nameStr){
$this->name = $nameStr;
}
abstract public function work();
public function work1(){
echo "<p>$this->name</p>";
}
//function __destruct(){}
}
class Managers extends Employees{
public function __construct($nameStr){
parent::__construct($nameStr);
}
public function work(){//如果子類(lèi)沒(méi)有擴(kuò)展(重寫(xiě))抽象類(lèi)的抽象方法,會(huì)產(chǎn)生致使錯(cuò)誤。
echo "<p>$this->name is working</p>";
}
}
//$obj1 = new Employees();//創(chuàng)建抽象類(lèi)對(duì)象時(shí),會(huì)產(chǎn)生一個(gè)致使錯(cuò)誤。
$obj2 = new Managers('e2');
$obj2->work();
測(cè)試運(yùn)行結(jié)果:
e2 is working
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
PHP面向?qū)ο笪宕笤瓌t之依賴(lài)倒置原則(DIP)詳解
這篇文章主要介紹了PHP面向?qū)ο笪宕笤瓌t之依賴(lài)倒置原則(DIP),簡(jiǎn)單講述了依賴(lài)倒置原則的概念、原理并結(jié)合實(shí)例形式分析了php依賴(lài)倒置原則相關(guān)定義與使用方法,需要的朋友可以參考下2018-04-04
PHP 數(shù)字左側(cè)自動(dòng)補(bǔ)0
舉例來(lái)說(shuō):?jiǎn)T工的工號(hào) X001 雖然 MySQL 本身的字段設(shè)定成 zerofill 的屬性時(shí),會(huì)將不足位數(shù)的部份補(bǔ)上0,但是這個(gè)功能只能用在數(shù)字的字段上面。 所以必要的時(shí)候只好靠PHP來(lái)進(jìn)行了。2008-03-03
php實(shí)現(xiàn)保存周期為1天的購(gòu)物車(chē)類(lèi)
這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)保存周期為1天的購(gòu)物車(chē)類(lèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
PHP類(lèi)和對(duì)象相關(guān)系統(tǒng)函數(shù)與運(yùn)算符小結(jié)
這篇文章主要介紹了PHP類(lèi)和對(duì)象相關(guān)系統(tǒng)函數(shù)與運(yùn)算符,結(jié)合實(shí)例形式總結(jié)分析了php類(lèi)與對(duì)象操作過(guò)程中常用的系統(tǒng)函數(shù)與運(yùn)算符,需要的朋友可以參考下2016-09-09
PHP實(shí)現(xiàn)的簡(jiǎn)單網(wǎng)絡(luò)硬盤(pán)
這篇文章主要介紹了PHP實(shí)現(xiàn)的簡(jiǎn)單網(wǎng)絡(luò)硬盤(pán),涉及php動(dòng)態(tài)創(chuàng)建文件夾及文件上傳的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07

