亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

江达县| 蓝田县| 田林县| 三原县| 封开县| 绥江县| 西和县| 勐海县| 邳州市| 来宾市| 桂平市| 霍山县| 泰州市| 德惠市| 绥化市| 桂东县| 昭通市| 广安市| 沅江市| 宜兴市| 礼泉县| 新安县| 龙南县| 梓潼县| 抚宁县| 江安县| 育儿| 安达市| 海晏县| 常熟市| 营山县| 南川市| 乌拉特中旗| 鲁山县| 丘北县| 陆良县| 永城市| 西盟| 图木舒克市| 宁乡县| 祁东县|