91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php中抽象類與接口有哪些區別

發布時間:2020-11-02 10:31:26 來源:億速云 閱讀:155 作者:小新 欄目:編程語言

php中抽象類與接口有哪些區別?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

區別:1、抽象類可以有屬性、普通方法、抽象方法,但接口不能有屬性、普通方法、可以有常量;2、抽象類用abstract關鍵字在類前聲明,且有class聲明為類,接口是用interface來聲明,但不能用class來聲明,因為接口不是類。

對于面向對象開發,抽象類與接口這兩個東西是比較難理解的。下面本篇文章給大家介紹一下php中抽象類與接口之間的區別。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

抽象類:是基于類來說,其本身就是類,只是一種特殊的類,不能直接實例,可以在類里定義方法,屬性。類似于模版,規范后讓子類實現詳細功能。

接口:主要基于方法的規范,有點像抽象類里的抽象方法,只是其相對于抽象方法來說,更加獨立。可讓某個類通過組合多個方法來形成新的類。

php中抽象類與接口的區別

1、抽象類可以有屬性、普通方法、抽象方法,但接口不能有屬性、普通方法、可以有常量

2、抽象類內未必有抽象方法,但接口內一定會有“抽象”方法

3、語法上有不同

4、抽象類用abstract關鍵字在類前聲明,且有class聲明為類,接口是用interface來聲明,但不能用class來聲明,因為接口不是類。

5、抽象類的抽象方法一定要用abstract來聲明,而接口則不需要

6、抽象類是用extends關鍵字讓子類繼承父類后,在子類實現詳細的抽象方法。而接口則是用implements讓普通類在類里實現接口的詳細方法,且接口可以一次性實現多個方法,用逗號分開各個接口就可

抽象類:

  • 抽象類無法被實例化,它的作用是為所有繼承自它的類定義(或部分實現)接口。

  • 使用 abstract 關鍵字定義抽象類。

  • 可以像在普通類中那樣在抽象類中創建方法和屬性,在大多數情況下,一個抽象類至少包含一個抽象方法,抽象方法也是通過 abstract 關鍵字聲明的。抽象方法只有方法聲明,沒有方法實現。不能編寫方法體。

abstract class ShopProductWriter
{
    protected $product = [];

    /**
     * 抽象類中可以定義普通方法
     */
    public function addProduct($shopProduct)
    {
        $this->product = $shopProduct;
    }

    /**
     * 定義一個抽象方法,只有方法聲明,沒有方法實現
     */
    abstract public function write();
}
  • 任何繼承自抽象類的類都必須實現所有的抽象方法,否則它自己就必須被定義為抽象類。子類不能僅僅實現抽象方法,還必須遵守方法簽名。這意味著實現方法的訪問控制不能比抽象方法更嚴格。實現方法還需要有與抽象方法相同數量的參數,以及相同的類型提示。

class XmlProductWriter extends ShopProductWriter
{
    /**
     * 任何繼承自抽象類的類都必須實現所有的抽象方法
     */
    public function write()
    {
        echo 'XmlProductWriter';
    }
}

接口:

  • 抽象類允許我們提供一些實現,但接口則是純粹的模板。接口只定義功能,不能有實現。可以有屬性和方法的聲明,但不能有方法體。

  • 使用 interface 關鍵字聲明接口。

interface Price
{
    /**
     * 只有方法聲明,沒有方法實現
     */
    public function getPrice();
}
  • 任何實現該接口的類都必須實現這個接口定義的所有方法,否則這個類就只能被聲明為抽象類。

  • 可以在類的聲明中使用 implements 關鍵字讓它實現接口。

class ShopProduct implements Price
{
    protected $price;

    public function getPrice()
    {
        // TODO: Implement getPrice() method.
        return $this->price;
    }
}
  • 一個實現類與它所實現的接口具有相同的類型。

  • 一個類可以在繼承一個父類的同時實現多個接口,implements 關鍵字后面跟著多個接口的名字,它們之間由逗號分隔開來。

感謝各位的閱讀!看完上述內容,你們對php中抽象類與接口有哪些區別大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜宾市| 奉贤区| 潜山县| 江津市| 民乐县| 肇东市| 平阳县| 宁强县| 南陵县| 三台县| 墨竹工卡县| 扎赉特旗| 通山县| 镇雄县| 西贡区| 樟树市| 武汉市| 宽城| 哈密市| 兴安盟| 金平| 武胜县| 黎平县| 巴中市| 永福县| 济宁市| 彭山县| 全椒县| 巴马| 佛冈县| 运城市| 鹤庆县| 乡宁县| 武强县| 临桂县| 香港| 革吉县| 辛集市| 金门县| 葫芦岛市| 开江县|