在PHP中,何時用抽象類別,何時用介面?

來源:互聯網
上載者:User
關鍵字 php
  • 請詳細說明為什麼使用抽象類別而不使用介面,或者為什麼使用介面而不使用抽象類別

回複內容:

  • 請詳細說明為什麼使用抽象類別而不使用介面,或者為什麼使用介面而不使用抽象類別

強調動作用介面,強調類別用抽象。

我也想過這個問題,兩者確實比較像。

使用介面,你是想規定開發人員(包括自己)需要實現一系列特定的類方法。

使用抽象類別,你是想規定開發人員(包括自己)需要實現一系列特定的類方法並且提供一些基本的類方法以供開發人員使用。

另一個區別是:一個類可以實現多個介面,但是只能繼承一個抽象類別。如果你的代碼是要規範一個很細的功能(比如Iterator什麼的),那就用介面。其他的則可以用介面也可以用抽象類別。

最後,有人建議如果不知道該用介面還是抽象類別,可以做的是定義一個介面然後寫一個實現那個介面的抽象類別。

介面是一種協定,抽象類別則相當於類模板。
使用抽象類別,而不要使用介面來分離協定與實現。
如果需要提供多態階層的實值型別,使用介面。
如果一個類型必須實現多個協定,或者協定適用於多種類型,使用介面。
雖然抽象類別和介面都支援將協定與實現分離開來,但介面不能指定以後版本中的新成員,而抽象類別可以根據需要新增成員以支援更多功能。
優先考慮定義類,而不是介面。

事實抽象類別和介面類,在應用中,有無都不影響程式運行;只是規範作用而已

比如抽象類別:比如定義當前類只能繼承使用,不可直接引用

介面類:最大作用就是起到規範作用。適用底層架構編寫完成後。為了後續的拓展,但又得保證代碼規範,一般會寫介面類,以便後期開發人員規範開發!

根據特點來,如果只是制定規範用介面,裡面只能定義常量和公有抽象方法

抽象類別只是說不能被執行個體化,裡面和普通類一樣什麼都能寫,當然還可以寫抽象方法

抽象用於不同的事物,而介面用於事物的行為

其實抽象類別和介面的區別不是太大,介面裡不能有自己的實現,抽象類別裡面可以有自己的實現,無論是介面還是抽象都是為了實現依賴抽象不要依賴具體實現的原則----**

依賴倒置的原則

**

我自己覺得php裡的介面純屬扯淡

單繼承多介面的情況下,介面是血統的一個關鍵因素,一個介面可以規定一個業務情境。。比如你是一個人,是抽象類別繼承過來的,你需要實現介面比如是某個公司的員工,是程式猿,這種方法類的層級相對較少。也可以某公司員工是一個抽象類別繼承人,然後程式猿繼承某公司員工,這樣。看設計上怎麼做。trait和介面能在第一種模式中提供極大的重用性

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.