PHP中的抽象類別跟介面

來源:互聯網
上載者:User
很多東西不經常用就會忘記,當你去面試的時候別人問的細你會發懵,這裡稍微總結下:

一、什麼是抽象類別

抽象類別其實跟父類的方法有點類似,避免子類重複寫一些功能,只需要繼承這個類就擁有了父類的所有方法,不同的是抽象類別會去定義抽象方法,子類繼承的時候必須實現抽象方法,因此適用於一些有固定規範的情形

二、抽象類別特性

1、不能直接執行個體化,必須先繼承,然後再執行個體化子類

2、抽象類別至少要包含一個以上的abstract方法,這些方法就是子類必須要實現的方法,其他的方法子類直接繼承,可以覆蓋

 // 強制要求子類定義這些方法 abstract protected function getValue(); abstract protected function prefixValue($prefix); // 普通方法(非抽象方法) public function printOut() {    print $this->getValue(); }

3、子類必須實現抽象類別中定義的抽象方法,並且方法的可見度必須和抽象類別中一樣(或者更為寬鬆)。如果抽象類別中某個抽象方法被聲明為protected,那麼子類中實現的方法就應該聲明為protected或者public,而不 能定義為private

三、什麼是介面類

介面是一種規範,他不去定義方法的實現,只要求我這些介面必須被實現,具體怎麼實現是你的事

四、介面類的特性

1、介面類的所有方法都只包含聲明(方法名稱跟入參),不能包含方法體

interface  SyncAccountInterface{    public function syncLogin($userId);    public function checkUsername($username, $randomName = '');}

2、介面類的所有方法都必須在實現介面類的方法中都實現,,少一個實現就會報錯

3、一個類可以實現多個介面,介面可以解決類的繼承不能繼承多個類的問題

五、抽象類別跟介面類的異同

1、抽象類別跟介面類都包含了子類必須去實現的方法,不同的是抽象類別還可以包括其他方法子類不用去實現,直接繼承或覆蓋這些方法,但標識為abstract的方法必須去實現。介面類不同,裡面所有的方法子類必須去實現。

2、一個類只能繼承一個類,但可以實現多個介面,因此在不同的使用場合我們需要抽象類別,也需要介面,根據使用場合定

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.