首頁  >  文章  >  後端開發  >  程式碼實例分析php介面與抽象類別有什麼區別

程式碼實例分析php介面與抽象類別有什麼區別

伊谢尔伦
伊谢尔伦原創
2017-07-03 09:31:281148瀏覽

本篇文章是對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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn