PHP抽象類 介紹
更新時(shí)間:2012年06月13日 14:29:18 作者:
對(duì)于PHP程序員來(lái)說(shuō),最為難掌握的一點(diǎn)要數(shù)PHP抽象類應(yīng)用這一塊知識(shí)點(diǎn)。作為一個(gè)新手其實(shí)也還沒(méi)有到要用面向?qū)ο蟮闹R(shí)去編程,但以后進(jìn)行開(kāi)發(fā),使用類進(jìn)行封裝或者使用接口之類,把程序進(jìn)行各種模塊式的開(kāi)發(fā),這當(dāng)然是必然的
在自然語(yǔ)言中,我們理解抽象的概念是,一個(gè)物體的一種大的描述,這種描述對(duì)某類物體來(lái)說(shuō)是共有的特性。那么在PHP中也是一樣的,我們把一個(gè)類進(jìn)行抽象,可以指明類的一般行為,這個(gè)類應(yīng)該是一個(gè)模板,它指示它的子方法必須要實(shí)現(xiàn)的一些行為。
PHP抽象類應(yīng)用的定義:
abstract class ClassName{
}
PHP抽象類應(yīng)用要點(diǎn):
1.定義一些方法,子類必須完全實(shí)現(xiàn)這個(gè)抽象中所有的方法
2.不能從抽象類創(chuàng)建對(duì)象,它的意義在于被擴(kuò)展
3.抽象類通常具有抽象方法,方法中沒(méi)有大括號(hào)
PHP抽象類應(yīng)用重點(diǎn):
1.抽象方法不必實(shí)現(xiàn)具體的功能,由子類來(lái)完成
2.在子類實(shí)現(xiàn)抽象類的方法時(shí),其子類的可見(jiàn)性必須大于或等于抽象方法的定義
3.抽象類的方法可以有參數(shù),也可以為空
4.如果抽象方法有參數(shù),那么子類的實(shí)現(xiàn)也必須有相同的參數(shù)個(gè)數(shù)
PHP抽象類應(yīng)用示例:
abstract public function_name(); //注意沒(méi)有大括號(hào)
PHP抽象類規(guī)則:
某個(gè)類只要至少含有一個(gè)抽象方法,就必須聲明為抽象類
抽象方法,不能夠含有函數(shù)體
繼承抽象類的子類,實(shí)現(xiàn)抽象方法的,必須跟該抽象方法具有相同或者更低的訪問(wèn)級(jí)別
繼承抽象類的子類,如果不實(shí)現(xiàn)所有抽象方法,那么該子類也為抽象類
作為演示,我們來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的抽象類:計(jì)算矩形的面積。這個(gè)矩形可以從形狀類擴(kuò)展。
< ?PHP
abstract class Shape {
abstract protected function get_area();
//和一般的方法不同的是,這個(gè)方法沒(méi)有大括號(hào)
//你不能創(chuàng)建這個(gè)抽象類的實(shí)例:$Shape_Rect= new Shape();
}
class Rectangle extends Shape{
private $width;
private $height;
function __construct($width=0,
$height=0){
$this->width=$width;
$this->height=$height;
}
function get_area(){
echo ($this->width+$this->height)*2;
}
}
$Shape_Rect = new Rectangle(20,30);
$Shape_Rect->get_area();
?>
這也算是一個(gè)簡(jiǎn)單的例子,基本上可以說(shuō)明PHP中抽象類的用法了,其他的不想多說(shuō)了。個(gè)人覺(jué)得抽象類一般在大的項(xiàng)目才會(huì)用吧,因?yàn)槲矣X(jué)得它實(shí)在是要遵守的”規(guī)矩”太多了,用起來(lái)不方便!當(dāng)然這只是我的意見(jiàn)。還想多說(shuō)一些,PHP抽象類應(yīng)用是單繼承的,也就是說(shuō)你只能從一個(gè)類繼承,而不能一個(gè)類繼承了A類,又繼承B類,如果要實(shí)現(xiàn)這樣的功能,得使用接口相關(guān)的知識(shí)了,在此暫時(shí)不討論P(yáng)HP接口的知識(shí)!一句話:?jiǎn)卫^承多接口中!
PHP抽象類應(yīng)用的定義:
abstract class ClassName{
}
PHP抽象類應(yīng)用要點(diǎn):
1.定義一些方法,子類必須完全實(shí)現(xiàn)這個(gè)抽象中所有的方法
2.不能從抽象類創(chuàng)建對(duì)象,它的意義在于被擴(kuò)展
3.抽象類通常具有抽象方法,方法中沒(méi)有大括號(hào)
PHP抽象類應(yīng)用重點(diǎn):
1.抽象方法不必實(shí)現(xiàn)具體的功能,由子類來(lái)完成
2.在子類實(shí)現(xiàn)抽象類的方法時(shí),其子類的可見(jiàn)性必須大于或等于抽象方法的定義
3.抽象類的方法可以有參數(shù),也可以為空
4.如果抽象方法有參數(shù),那么子類的實(shí)現(xiàn)也必須有相同的參數(shù)個(gè)數(shù)
PHP抽象類應(yīng)用示例:
abstract public function_name(); //注意沒(méi)有大括號(hào)
PHP抽象類規(guī)則:
某個(gè)類只要至少含有一個(gè)抽象方法,就必須聲明為抽象類
抽象方法,不能夠含有函數(shù)體
繼承抽象類的子類,實(shí)現(xiàn)抽象方法的,必須跟該抽象方法具有相同或者更低的訪問(wèn)級(jí)別
繼承抽象類的子類,如果不實(shí)現(xiàn)所有抽象方法,那么該子類也為抽象類
作為演示,我們來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的抽象類:計(jì)算矩形的面積。這個(gè)矩形可以從形狀類擴(kuò)展。
復(fù)制代碼 代碼如下:
< ?PHP
abstract class Shape {
abstract protected function get_area();
//和一般的方法不同的是,這個(gè)方法沒(méi)有大括號(hào)
//你不能創(chuàng)建這個(gè)抽象類的實(shí)例:$Shape_Rect= new Shape();
}
class Rectangle extends Shape{
private $width;
private $height;
function __construct($width=0,
$height=0){
$this->width=$width;
$this->height=$height;
}
function get_area(){
echo ($this->width+$this->height)*2;
}
}
$Shape_Rect = new Rectangle(20,30);
$Shape_Rect->get_area();
?>
這也算是一個(gè)簡(jiǎn)單的例子,基本上可以說(shuō)明PHP中抽象類的用法了,其他的不想多說(shuō)了。個(gè)人覺(jué)得抽象類一般在大的項(xiàng)目才會(huì)用吧,因?yàn)槲矣X(jué)得它實(shí)在是要遵守的”規(guī)矩”太多了,用起來(lái)不方便!當(dāng)然這只是我的意見(jiàn)。還想多說(shuō)一些,PHP抽象類應(yīng)用是單繼承的,也就是說(shuō)你只能從一個(gè)類繼承,而不能一個(gè)類繼承了A類,又繼承B類,如果要實(shí)現(xiàn)這樣的功能,得使用接口相關(guān)的知識(shí)了,在此暫時(shí)不討論P(yáng)HP接口的知識(shí)!一句話:?jiǎn)卫^承多接口中!
您可能感興趣的文章:
- PHP入門(mén)教程之面向?qū)ο蟮奶匦苑治?繼承,多態(tài),接口,抽象類,抽象方法等)
- PHP中抽象類和抽象方法概念與用法分析
- PHP 抽象方法與抽象類abstract關(guān)鍵字介紹及應(yīng)用
- php面向?qū)ο笕ヂ?(十二) 抽象方法和抽象類
- PHP5.0對(duì)象模型探索之抽象方法和抽象類
- 深入解讀php中關(guān)于抽象(abstract)類和抽象方法的問(wèn)題分析
- php 接口類與抽象類的實(shí)際作用
- php接口和抽象類使用示例詳解
- 深入分析php中接口與抽象類的區(qū)別
- PHP中用接口、抽象類、普通基類實(shí)現(xiàn)“面向接口編程”與“耦合方法”簡(jiǎn)述
- 通過(guò)具體程序來(lái)理解PHP里面的抽象類
- php抽象方法和抽象類實(shí)例分析
相關(guān)文章
解讀PHP的Yii框架中請(qǐng)求與響應(yīng)的處理流程
這篇文章主要介紹了PHP的Yii框架中請(qǐng)求與響應(yīng)的處理流程,這也是Yii處理網(wǎng)站后臺(tái)的最基本功能,需要的朋友可以參考下2016-03-03
PHP+sqlite數(shù)據(jù)庫(kù)操作示例(創(chuàng)建/打開(kāi)/插入/檢索)
這篇文章主要介紹了PHP+sqlite數(shù)據(jù)庫(kù)操作的方法,簡(jiǎn)單分析了sqlite數(shù)據(jù)庫(kù)的功能及相關(guān)操作技巧,包括創(chuàng)建,打開(kāi),插入,檢索及錯(cuò)誤提示等,需要的朋友可以參考下2016-05-05
php微信開(kāi)發(fā)之批量生成帶參數(shù)的二維碼
這篇文章主要介紹了php微信開(kāi)發(fā)之批量生成帶參數(shù)的二維碼 的相關(guān)資料,需要的朋友可以參考下2016-06-06
PHP 巧用數(shù)組降低程序的時(shí)間復(fù)雜度
通常開(kāi)發(fā)人員在寫(xiě)程序的時(shí)候,往往是把已經(jīng)設(shè)計(jì)好或者構(gòu)思好的運(yùn)算邏輯,直接用編程語(yǔ)言翻譯出來(lái)。2010-01-01
PHP實(shí)現(xiàn)微信掃碼登錄功能的兩種方式總結(jié)
這篇文章主要為大家介紹了利用PHP實(shí)現(xiàn)微信掃碼登錄功能的兩種方式,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定借鑒價(jià)值,需要的可以參考一下2022-08-08
php+ajax實(shí)現(xiàn)仿百度查詢下拉內(nèi)容功能示例
這篇文章主要介紹了php+ajax實(shí)現(xiàn)仿百度查詢下拉內(nèi)容功能,結(jié)合具體實(shí)例形式分析了php結(jié)合ajax動(dòng)態(tài)查詢功能的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-10-10

