PHP接口与抽象类区别:接口用来扩展应用 抽象用来总结归纳
生活随笔
收集整理的這篇文章主要介紹了
PHP接口与抽象类区别:接口用来扩展应用 抽象用来总结归纳
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.理解
抽象類:比如男人,女人這兩個類,那我們可以為這兩個類設計一個更高級別的抽象類 人。
接口:我們可以坐著吃飯,可站著吃飯,可以用筷子吃飯,那么可以把這些吃飯的動作抽象成一個接口 吃飯
一個類只能繼承一個抽象類(因為你不可能同時是生物又是非生物)。
但是
一個類可以同時實現多個接口,比如開車接口,滑冰接口,踢足球接口,游泳接口。
總結
abstract是向上提取一個共性 interface是給一個事物對象提供多個解決問題的方法。
2.區別
1.接口類用implements,抽象類用extends.2.變量類型 :接口類中不可以含有成員變量/靜態變量,可以類常量。抽象類中可以聲明各種類型成員變量,實現數據封裝。3.構造函數 接口類沒有構造函數,抽象類可以有構造函數。4.方法權限? 接口類中默認的方法都是public類型的,而抽象類可以public/protected/private5.幾個 一個類可以有多個接口,一個類只能有一個抽象類。6.執行 接口里面的方法也必須全部被子類實現,如果子類不能實現那么子類必須是抽象類。 抽象類里面的抽象方法必須全部被子類實現,如果子類不能全部實現,那么子類必須也是抽象類。7.抽象 抽象類里面可以沒有抽象方法。 如果一個類里面有抽象方法,那么這個類一定是抽象類。 接口(類)可以繼承接口,甚至可以繼承多個接口。但是類只能繼承一個類。8.實例化? 抽象類和接口都不能被直接實例化4.代碼
<?php abstract class Father {function meth1() {echo "meth1...<br>";}abstract function meth2();public $var1="var1";public static $var2="var2";const Var3="Var3"; } class Son extends Father {function meth2() {echo "meth2 of Son...<br>";} } $s=new Son(); echo $s->var1."<br>"; echo Father::$var2."<br>"; echo Father::Var3."<br>";Interface IFather {//public $iVar1="iVar1"; 此處接口定義中不能包含成員變量//public static $iVar2="iVar2"; 此處接口定義中不能包含靜態變量const iVar3="iVar3";function iMeth1(); } Class ISon implements IFather {function iMeth1() {echo "iMeth1...<br>";} } $is=new ISon(); echo IFather::iVar3; ?>5.圖示
6.選擇
1.多個源的話,就要用接口
2.方法共享話,就要用抽象
3.緊密相關的話就用抽象類,相關性不大就用接口類。 抽象類的功能應該要遠多于接口,但是定義抽象類的代價較高。因為高級語言一個類只能繼承一個父類,即你在設計這個類的時候必須要抽象出所有這個類的子類所具有的共同屬性和方法;但是類(接口)卻可以繼承多個接口,,因此每個接口你只需要將特定的動作方法抽象到這個接口即可...也就是說,接口的設計具有更大的可擴展性,而抽象類的設計必須十分謹慎
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的PHP接口与抽象类区别:接口用来扩展应用 抽象用来总结归纳的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三方比价是什么意思
- 下一篇: MySQL对in里面数据进行指定排序:o