php 抽象類,接口的區別

    只要一個類裏面只要有一個方法是抽象方法,那麼這個類就要定義爲抽象類,反過來講就是抽象類裏面不必定全都得是抽象方法。ide

    能被實例化的子類必須把抽象類的父類中的抽象方法所有都實現,不然報錯,換句話說就是:設計

子類必須把父類中的抽象方法所有都實現,不然子類中還存在抽象方法,那麼子類仍是抽象類,仍是不能實例化對。要想實例化抽象類,必須使用其實現了全部抽象方法的子類,這個子類還能寫其父類沒有的方法。對象

   接口感受就是類的模板,實現某接口就得實現接口裏面的所有方法,少一個都不行。
繼承


   要實例化接口或者抽象類,都得所有實現父類裏面的所有抽象方法。接口

================================如下是轉載來的,說得太好=================================it

接口和抽象類有什麼區別模板

你選擇使用接口和抽象類的依據是什麼?class


接口和抽象類的概念不同。接口是對動做的抽象,抽象類是對根源的抽象。方法

抽象類表示的是,這個對象是什麼。接口表示的是,這個對象能作什麼。好比,男人,女人,這兩個類(若是是類的話……),他們的抽象類是人。說明,他們都是人。語言

人能夠吃東西,狗也能夠吃東西,你能夠把「吃東西」定義成一個接口,而後讓這些類去實現它.

因此,在高級語言上,一個類只能繼承一個類(抽象類)(正如人不可能同時是生物和非生物),可是能夠實現多個接口(吃飯接口、走路接口)。

第一點. 接口是抽象類的變體,接口中全部的方法都是抽象的。而抽象類是聲明方法的存在而不去實現它的類。

第二點. 接口能夠多繼承,抽象類不行

第三點. 接口定義方法,不能實現,而抽象類能夠實現部分方法。

當你關注一個事物的本質的時候,用抽象類;當你關注一個操做的時候,用接口。


抽象類的功能要遠超過接口,可是,定義抽象類的代價高。由於高級語言來講(從實際設計上來講也是)每一個類只能繼承一個類。在這個類中,你必須繼承或編寫出其全部子類的

全部共性。雖然接口在功能上會弱化許多,可是它只是針對一個動做的描述。並且你能夠在一個類中同時實現多個接口。在設計階段會下降難度的。

=========================================================================================

相關文章
相關標籤/搜索