本篇文章是對php中介面與抽象類別的區別進行了詳細的分析介紹,需要的朋友參考下
介面和抽象類真的很難區分開,引文他們很相似,方法都沒有定義邏輯,都是供子類別是想或繼承的。區分二者只要記住一句話:介面是規範,類別是實作。 介面的目的是定義一個規範,大家都遵守這個規範。
也就是說,從目的上可以很清楚地區分介面和抽象類別。那麼還是有疑問,既然有了藉口,那為什麼還必須有抽象類別呢?
加入我們要定義一個名為Animal的類,該類別有兩個子集Dog和Cattle,二者都有兩個方法:run()方法和speak()方法。
假定Dog和Cattle的「跑(run)」是相同的,因此run()方法具有相同的業務邏輯;而「叫(speak)」是不同的,因此speak()方法的業務邏輯不同。而且,有一個IAnimal的介面規定必須有這兩個方法,這意味著Animal類別必須實作這兩個方法,同樣,Dog和Cattle這兩個子類別也必須有這兩個方法嗎,那麼我們可以這樣定義:
程式碼如下:
<?php interface IAnimal{ public function run(); public function speak(); } class Animal implements IAnimal{ public function run(){ //在这里可以添加一些相同的run逻辑 return "same run<br />"; } public function speak(){ //这里可以添加一些相同的speak逻辑 return "same speak<br />"; } } class Dog extends Animal{ public function speak(){ //在这里可以添加一些Dog逻辑 return "Dog speak<br />"; } } class Cattle extends Animal{ public function speak(){ //在这里可以添加一些Cattle逻辑 return "Cattle speak<br />"; } } $oDog=new Dog(); echo($oDog->run()); echo($oDog->speak()); $oCattle=new Cattle(); echo($oCattle->run()); echo($oCattle->speak()); ?>
以上是程式碼實例分析php介面與抽象類別有什麼區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!