PHP抽象類 介紹
更新時間:2012年06月13日 14:29:18 作者:
對于PHP程序員來說,最為難掌握的一點要數(shù)PHP抽象類應用這一塊知識點。作為一個新手其實也還沒有到要用面向?qū)ο蟮闹R去編程,但以后進行開發(fā),使用類進行封裝或者使用接口之類,把程序進行各種模塊式的開發(fā),這當然是必然的
在自然語言中,我們理解抽象的概念是,一個物體的一種大的描述,這種描述對某類物體來說是共有的特性。那么在PHP中也是一樣的,我們把一個類進行抽象,可以指明類的一般行為,這個類應該是一個模板,它指示它的子方法必須要實現(xiàn)的一些行為。
PHP抽象類應用的定義:
abstract class ClassName{
}
PHP抽象類應用要點:
1.定義一些方法,子類必須完全實現(xiàn)這個抽象中所有的方法
2.不能從抽象類創(chuàng)建對象,它的意義在于被擴展
3.抽象類通常具有抽象方法,方法中沒有大括號
PHP抽象類應用重點:
1.抽象方法不必實現(xiàn)具體的功能,由子類來完成
2.在子類實現(xiàn)抽象類的方法時,其子類的可見性必須大于或等于抽象方法的定義
3.抽象類的方法可以有參數(shù),也可以為空
4.如果抽象方法有參數(shù),那么子類的實現(xiàn)也必須有相同的參數(shù)個數(shù)
PHP抽象類應用示例:
abstract public function_name(); //注意沒有大括號
PHP抽象類規(guī)則:
某個類只要至少含有一個抽象方法,就必須聲明為抽象類
抽象方法,不能夠含有函數(shù)體
繼承抽象類的子類,實現(xiàn)抽象方法的,必須跟該抽象方法具有相同或者更低的訪問級別
繼承抽象類的子類,如果不實現(xiàn)所有抽象方法,那么該子類也為抽象類
作為演示,我們來實現(xiàn)一個簡單的抽象類:計算矩形的面積。這個矩形可以從形狀類擴展。
< ?PHP
abstract class Shape {
abstract protected function get_area();
//和一般的方法不同的是,這個方法沒有大括號
//你不能創(chuàng)建這個抽象類的實例:$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();
?>
這也算是一個簡單的例子,基本上可以說明PHP中抽象類的用法了,其他的不想多說了。個人覺得抽象類一般在大的項目才會用吧,因為我覺得它實在是要遵守的”規(guī)矩”太多了,用起來不方便!當然這只是我的意見。還想多說一些,PHP抽象類應用是單繼承的,也就是說你只能從一個類繼承,而不能一個類繼承了A類,又繼承B類,如果要實現(xiàn)這樣的功能,得使用接口相關(guān)的知識了,在此暫時不討論PHP接口的知識!一句話:單繼承多接口中!
PHP抽象類應用的定義:
abstract class ClassName{
}
PHP抽象類應用要點:
1.定義一些方法,子類必須完全實現(xiàn)這個抽象中所有的方法
2.不能從抽象類創(chuàng)建對象,它的意義在于被擴展
3.抽象類通常具有抽象方法,方法中沒有大括號
PHP抽象類應用重點:
1.抽象方法不必實現(xiàn)具體的功能,由子類來完成
2.在子類實現(xiàn)抽象類的方法時,其子類的可見性必須大于或等于抽象方法的定義
3.抽象類的方法可以有參數(shù),也可以為空
4.如果抽象方法有參數(shù),那么子類的實現(xiàn)也必須有相同的參數(shù)個數(shù)
PHP抽象類應用示例:
abstract public function_name(); //注意沒有大括號
PHP抽象類規(guī)則:
某個類只要至少含有一個抽象方法,就必須聲明為抽象類
抽象方法,不能夠含有函數(shù)體
繼承抽象類的子類,實現(xiàn)抽象方法的,必須跟該抽象方法具有相同或者更低的訪問級別
繼承抽象類的子類,如果不實現(xiàn)所有抽象方法,那么該子類也為抽象類
作為演示,我們來實現(xiàn)一個簡單的抽象類:計算矩形的面積。這個矩形可以從形狀類擴展。
復制代碼 代碼如下:
< ?PHP
abstract class Shape {
abstract protected function get_area();
//和一般的方法不同的是,這個方法沒有大括號
//你不能創(chuàng)建這個抽象類的實例:$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();
?>
這也算是一個簡單的例子,基本上可以說明PHP中抽象類的用法了,其他的不想多說了。個人覺得抽象類一般在大的項目才會用吧,因為我覺得它實在是要遵守的”規(guī)矩”太多了,用起來不方便!當然這只是我的意見。還想多說一些,PHP抽象類應用是單繼承的,也就是說你只能從一個類繼承,而不能一個類繼承了A類,又繼承B類,如果要實現(xiàn)這樣的功能,得使用接口相關(guān)的知識了,在此暫時不討論PHP接口的知識!一句話:單繼承多接口中!
您可能感興趣的文章:
- PHP入門教程之面向?qū)ο蟮奶匦苑治?繼承,多態(tài),接口,抽象類,抽象方法等)
- PHP中抽象類和抽象方法概念與用法分析
- PHP 抽象方法與抽象類abstract關(guān)鍵字介紹及應用
- php面向?qū)ο笕ヂ?(十二) 抽象方法和抽象類
- PHP5.0對象模型探索之抽象方法和抽象類
- 深入解讀php中關(guān)于抽象(abstract)類和抽象方法的問題分析
- php 接口類與抽象類的實際作用
- php接口和抽象類使用示例詳解
- 深入分析php中接口與抽象類的區(qū)別
- PHP中用接口、抽象類、普通基類實現(xiàn)“面向接口編程”與“耦合方法”簡述
- 通過具體程序來理解PHP里面的抽象類
- php抽象方法和抽象類實例分析
相關(guān)文章
非集成環(huán)境的php運行環(huán)境(Apache配置、Mysql)搭建安裝圖文教程
這篇文章主要介紹了非集成環(huán)境的php運行環(huán)境(Apache配置、Mysql)搭建安裝圖文教程,感興趣的小伙伴們可以參考一下2016-04-04php使用curl代理實現(xiàn)抓取數(shù)據(jù)的方法
這篇文章主要介紹了php使用curl代理實現(xiàn)抓取數(shù)據(jù)的方法,結(jié)合實例形式分析了php使用curl實現(xiàn)代理抓取數(shù)據(jù)的操作技巧,需要的朋友可以參考下2017-02-02php源碼分析之DZX1.5加密解密函數(shù)authcode用法
這篇文章主要介紹了php源碼分析之DZX1.5加密解密函數(shù)authcode用法,實例分析了DZX1.5中authcode函數(shù)加密與解密的使用技巧,需要的朋友可以參考下2015-06-06有關(guān) PHP 和 MySQL 時區(qū)的一點總結(jié)
由于暫時使用國外的空間,在我發(fā)布 Blog 的時候發(fā)現(xiàn)時間總是不對。依據(jù)我以前編寫程序的經(jīng)驗,這是時區(qū)的問題。這個問題解決起來并不難,寫下我的解決途徑以便日后參考。2008-03-03php中使用ExcelFileParser處理excel獲得數(shù)據(jù)(可作批量導入到數(shù)據(jù)庫使用)
使用ExcelFileParser處理excel獲得數(shù)據(jù) 可以用作批量導入到數(shù)據(jù)庫使用,需要獲取excel數(shù)據(jù)的朋友可以參考下。2010-08-08