摘要:如果一個抽象類里面的所有方法都是抽象方法,且沒有聲明變量,而且接口里面所有的成員都是權(quán)限的,那么這種特殊的抽象類就叫接口。抽象類只能單繼承,當(dāng)一個子類需要實現(xiàn)的功能需要繼承自多個父類時,就必須使用接口。
PHP 接口
PHP 類是單繼承,也就是不支持多繼承,當(dāng)一個類需要多個類的功能時,繼承就無能為力了,為此 PHP 引入了類的接口技術(shù)。
如果一個抽象類里面的所有方法都是抽象方法,且沒有聲明變量,而且接口里面所有的成員都是 public 權(quán)限的,那么這種特殊的抽象類就叫 接口 。
接口使用關(guān)鍵字 interface 來定義,并使用關(guān)鍵字 implements 來實現(xiàn)接口中的方法,且必須完全實現(xiàn)。
例子:
discount; } function getUserType() { return "VIP用戶"; } } class Goods{ var $price = 100; var $vc; //定義 User 接口類型參數(shù),這時并不知道是什么用戶 function run(User $vc){ $this->vc = $vc; $discount = $this->vc->getDiscount(); $usertype = $this->vc->getUserType(); echo $usertype."商品價格:".$this->price*$discount; } } $display = new Goods(); $display ->run(new VipUser); //可以是更多其他用戶類型 ?>
運(yùn)行該例子,輸出:
VIP用戶商品價格:80 元
該例子演示了一個 PHP 接口的簡單應(yīng)用。該例子中,User 接口實現(xiàn)用戶的折扣,而在 VipUser 類里面實現(xiàn)了具體的折扣系數(shù)。最后商品類 Goods 根據(jù) User 接口來實現(xiàn)不同的用戶報價。
該例子僅限于演示 PHP 接口的用法,不涉及其科學(xué)與否。
實現(xiàn)多個接口
PHP也可以在繼承一個類的時候同時實現(xiàn)多個接口:
class 子類 extends 父類 implemtns 接口1, 接口2, ...
{
......
}
抽象類和接口的區(qū)別
1.接口是特殊的抽象類,也可以看做是一個模型的規(guī)范。接口與抽象類大致區(qū)別如下:
一個子類如果 implements 一個接口,就必須實現(xiàn)接口中的所有方法(不管是否需要);如果是繼承一個抽象類,只需要實現(xiàn)需要的方法即可。
2.如果一個接口中定義的方法名改變了,那么所有實現(xiàn)此接口的子類需要同步更新方法名;而抽象類中如果方法名改變了,其子類對應(yīng)的方法名將不受影響,只是變成了一個新的方法而已(相對老的方法實現(xiàn))。
3.抽象類只能單繼承,當(dāng)一個子類需要實現(xiàn)的功能需要繼承自多個父類時,就必須使用接口。
來自:http://www.5idev.com/p-php_cl...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/22963.html
摘要:面向?qū)ο竺嫦驅(qū)ο蠡A(chǔ)面向?qū)ο笫裁词穷惥哂邢嗤瑢傩蕴卣骱头椒ㄐ袨榈囊幌盗袀€體的集合,類是一個抽象的概念。析構(gòu)函數(shù),當(dāng)一個對象被銷毀前,自動調(diào)用。作用是為新克隆的對象進(jìn)行初始化賦值對象序列化時,自動調(diào)用。使用抽象類的作用限制實例化。 面向?qū)ο?面向?qū)ο蠡A(chǔ) 面向?qū)ο?什么是類? 具有相同屬性(特征)和方法(行為)的一系列個體的集合,類是一個抽象的概念。 什么是對象? 從類中,拿到的具有具體...
摘要:特殊在,方法被對象調(diào)用執(zhí)行時,會自動確定是那個對象調(diào)用的該方法,會使用該對象為方法內(nèi)的賦值構(gòu)造析構(gòu)類,沒有作用域,作用域,只是講,函數(shù)內(nèi)和函數(shù)外。析構(gòu)在對象消失對象被銷毀時,也會自動執(zhí)行一個方法,稱之為析構(gòu)方法。 相關(guān)定義 對象(object):現(xiàn)實生活中的實體,在編程語言中的體現(xiàn)。實體都有屬性和功能。一組數(shù)據(jù),和操作管理這些數(shù)據(jù)的操作,定義在一起就形成了一個實體,稱之為對象。(屬性和...
摘要:一面向?qū)ο蟮母拍钍裁词敲嫦驅(qū)ο笫篱g萬物皆對象,抽象的也是對象,一切可見或不可見都是對象對象的基本組成對象包含兩個部分對象的組成元素是對象的數(shù)據(jù)模型,用于描述對象的數(shù)據(jù)又稱為對象的屬性,或者對象的成員變量對象的行為是對象的行為模型,用于描述對 一、面向?qū)ο蟮母拍?1.1 什么是面向?qū)ο?object oriented) ?????世間萬物皆對象,抽象的也是對象,一切可見或不可見都是對象 ...
摘要:中的抽象類和接口有什么區(qū)別呢我們來看下具體的說明。而抽象類中抽象方法前則必須加上表示顯示聲明為抽象方法。抽象類不能被直接實例化。詳情請看原文中的抽象類和接口注本文為轉(zhuǎn)載,原文地址中的抽象類和接口 PHP中的 抽象類(abstract class)和 接口(interface)有什么區(qū)別呢?我們來看下具體的說明。 一、 抽象類和接口的異同 1.相同點: (1)兩者都是抽象類,都不能實例化...
閱讀 1808·2021-09-23 11:34
閱讀 2527·2021-09-22 15:45
閱讀 13332·2021-09-22 15:07
閱讀 2361·2021-09-02 15:40
閱讀 4251·2021-07-29 14:48
閱讀 1151·2019-08-30 15:55
閱讀 3307·2019-08-30 15:55
閱讀 2251·2019-08-30 15:55