php中抽象類和介面的概念與區別

2021-07-25 02:27:37 字數 1478 閱讀 4923

php裡面的介面類,抽象類到底有什麼用呢?  在我才接觸php的時候,覺得這個東西沒有什麼用,在後來的逐漸接觸大系統以後,才發現其實這些東西還是有一定的作用的,下面我就簡單的說說。

1.php 介面類:inte***ce

其實他們的作用很簡單,當有很多人一起開發乙個專案時,可能都會去呼叫別人寫的一些類,那你就會問,我怎麼知道他的某個功能的實現方法是怎麼命名的呢,這個時候php介面類就起到作用了,當我們定義了乙個介面類時,它裡面的方式是下面的子類必須實現的,比如

inte***ce shop

我宣告乙個shop介面類,定義了三個方法:買(buy),賣(sell),看(view),那麼繼承此類的所有子類都必須實現這3個方法少乙個都不行,如果子類沒有實現這些話,就無法執行。實際上介面類說白了,就是乙個類的模板,乙個類的行為規範,如果你屬於本介面,那你就必須遵循我的規定,實現本介面的的所有方法,少乙個都不行,但是具體你怎麼去做,我不管,那是你的事,如:

class baseshop implements shop

public function sell($gid)

public function view($gid)

}

你想想,在乙個多人合作的大專案裡面,有了介面類是多麼的方便,這樣你就不用去問別人,你的某某功能的方法名是什麼了,當然如果你們喜歡這樣我也沒有辦法。

結論 : 介面類就是乙個類的領導者,指明方向,非抽象型子類必須實現介面所指定的全部方法。

2.php 抽象類 : abstract

其實抽象類和介面類有一部分很像,記得在**看見這樣一句話:抽象類就把類相像或相似的部分給抽取出來,這句看上去很搞笑,其實它說出了抽象類的真理.抽象類的作用是,當你發現你的很多類裡面用很多方法你不斷的在重複寫,那你就可以考慮使用抽象類了,你可能會說「我不是可以重寫乙個公共類,然後我例項化這個公共類,呼叫相同的方法就可以了」,這裡是可以,實際上抽象類做的工作也就是這個,不過他省去了你例項化的這個步驟,讓你就像直接呼叫本類方法一樣方便,而且你還可以過載這個方法。如:

abstract class baseshop 

public function sell($gid)

public function view($gid)

}class ballshop extends baseshop

public function open()

}

這裡是乙個例子,想上面一樣我定義了乙個商店類,抽所了它所有像的部分,買(buy),賣(sell),看(view),並且抽象類裡都實現了這些方法,那麼繼承它的子類就自動獲得了這些方法,子類就做它自己獨特的東西,避免**的重複,提高了復用性。

結論: 抽象類就是乙個類的服務提供商,擁有眾多服務,當需要的時候你來用就可以,如果你覺得抽象類提供的服務不滿意,你還可以自己在子類重新來做。

php中抽象類和介面的概念和區別

抽象類的定義 abstract class ku function aa extends ku 使用方法 aa new aa aa kx 1.定義一些方法,子類必須完全實現這個抽象中所有的方法 2.不能從抽象類建立物件,它的意義在於被擴充套件 3.抽象類通常具有抽象方法,方法中沒有大括號 4.抽象方...

php中抽象類與介面的區別

1,抽象類繼承extends 介面的繼承implements 2,介面沒有資料成員,但是抽象類有資料成員,而且可以進行封裝 3,介面沒有建構函式 4,介面中只能使用public修飾符,抽象類可以使用public,protected,private 5,乙個類可以繼承多個介面,但是只能繼承乙個抽象類。...

PHP抽象類與介面的異同

抽象類與介面的異同 一 相同點 1.兩者都是抽象類,都不能例項化 2.inte ce實現類及abstract class的子類都必須要實現已經宣告的抽象方法 二 不同點 1.inte ce需要實現,要用implements,而abstract class需要繼承,要用extends 2.乙個類可以實...