Yii2 PHP框架--interface

接口 interface

PHP 類是單繼承辐董,也就是不支持多繼承甚亭,當(dāng)一個類需要多個類的功能時伐坏,繼承就無能為力了怔匣,為此 PHP 引入了類的接口技術(shù)。

如果一個抽象類里面的所有方法都是抽象方法桦沉,且沒有聲明變量每瞒,而且接口里面所有的成員都是 public 權(quán)限的,那么這種特殊的抽象類就叫 接口 纯露。

接口是特殊的抽象類剿骨,也可以看做是一個模型的規(guī)范。

接口的特點(diǎn)
  1. 接口的方法必須是公開的埠褪。
  1. 接口的方法默認(rèn)是抽象的浓利,所以不在方法名前面加abstract。
  2. 接口可以定義常量钞速,但不能定義成員屬性贷掖,常量的定義和用法和類中常量一樣。
  3. 類可以實(shí)現(xiàn)多個接口渴语。
  4. 接口也可以繼承接口苹威。
  5. 接口使用關(guān)鍵字 interface 來定義,并使用關(guān)鍵字 implements 來實(shí)現(xiàn)接口中的方法驾凶,且必須完全實(shí)現(xiàn)牙甫。
舉例
<?php
//定義接口
interface User{
    function getDiscount();
    function getUserType();
}
//VIP用戶 接口實(shí)現(xiàn)
class VipUser implements User{
    // VIP 用戶折扣系數(shù)
    private $discount = 0.8;
    function getDiscount() {
        return $this->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);    //可以是更多其他用戶類型
?>

//輸出:VIP用戶商品價格:80 元 
抽象類和接口的區(qū)別
  1. 一個子類如果 implements 一個接口,就必須實(shí)現(xiàn)接口中的所有方法(不管是否需要)腹暖;如果是繼承一個抽象類,只需要實(shí)現(xiàn)需要的方法即可翰萨。
  1. 如果一個接口中定義的方法名改變了脏答,那么所有實(shí)現(xiàn)此接口的子類需要同步更新方法名;而抽象類中如果方法名改變了亩鬼,其子類對應(yīng)的方法名將不受影響殖告,只是變成了一個新的方法而已(相對老的方法實(shí)現(xiàn))。
  2. 抽象類只能單繼承雳锋,當(dāng)一個子類需要實(shí)現(xiàn)的功能需要繼承自多個父類時黄绩,就必須使用接口。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玷过,一起剝皮案震驚了整個濱河市爽丹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辛蚊,老刑警劉巖粤蝎,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異袋马,居然都是意外死亡初澎,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門虑凛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碑宴,“玉大人,你說我怎么就攤上這事桑谍⊙幽” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵锣披,是天一觀的道長捕仔。 經(jīng)常有香客問我,道長盈罐,這世上最難降的妖魔是什么榜跌? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮盅粪,結(jié)果婚禮上钓葫,老公的妹妹穿的比我還像新娘。我一直安慰自己票顾,他們只是感情好础浮,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布帆调。 她就那樣靜靜地躺著,像睡著了一般豆同。 火紅的嫁衣襯著肌膚如雪番刊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天影锈,我揣著相機(jī)與錄音芹务,去河邊找鬼。 笑死鸭廷,一個胖子當(dāng)著我的面吹牛枣抱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辆床,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼佳晶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了讼载?” 一聲冷哼從身側(cè)響起轿秧,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咨堤,沒想到半個月后淤刃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吱型,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年逸贾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片津滞。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡铝侵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出触徐,到底是詐尸還是另有隱情咪鲜,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布撞鹉,位于F島的核電站疟丙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鸟雏。R本人自食惡果不足惜享郊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望孝鹊。 院中可真熱鬧炊琉,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至团赏,卻和暖如春箕般,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舔清。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工丝里, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鸠踪。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像复斥,于是被迫代替她去往敵國和親营密。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法目锭,類相關(guān)的語法评汰,內(nèi)部類的語法,繼承相關(guān)的語法痢虹,異常的語法被去,線程的語...
    子非魚_t_閱讀 31,581評論 18 399
  • 一:java概述:1,JDK:Java Development Kit奖唯,java的開發(fā)和運(yùn)行環(huán)境惨缆,java的開發(fā)工...
    ZaneInTheSun閱讀 2,629評論 0 11
  • 1.import static是Java 5增加的功能,就是將Import類中的靜態(tài)方法,可以作為本類的靜態(tài)方法來...
    XLsn0w閱讀 1,212評論 0 2
  • 面向?qū)ο笾饕槍γ嫦蜻^程丰捷。 面向過程的基本單元是函數(shù)坯墨。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,045評論 0 4
  • 可能因?yàn)樽约旱牟桓颐鎸Γ艜@樣病往。這算是一種委屈自己嗎捣染?還是自作孽不可活。既然不愛停巷,又是現(xiàn)實(shí)的拼湊嗎耍攘? 別人以...
    小飛俠laura閱讀 221評論 0 0