區別:
1、對介面的使用是透過關鍵字implements。對抽象類別的使用是透過關鍵字extends。當然介面也可以透過關鍵字extends繼承。
2、介面中不可以宣告成員變數(包括類別靜態變數),但是可以宣告類別常數。抽象類別中可以宣告各種類型成員變量,實作資料的封裝。 (另JAVA介面中的成員變數都要宣告為public static final型別)
<?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; ?>
3、介面沒有建構子,抽象類別可以有建構子。
4、介面中的方法預設都是public類型的,而抽象類別中的方法可以使用private,protected,public來修飾。
5、一個類別可以同時實作多個接口,但一個類別只能繼承於一個抽象類別。
抽象類別還是介面。
如果要建立一個模型,這個模型將由一些緊密相關的物件採用,就可以使用抽象類別。如果要建立將由一些不相關物件採用的功能,就使用介面。
如果必須從多個來源繼承行為,就使用介面。
如果知道所有類別都會共用一個公共的行為實現,就使用抽象類,並在其中實現該行為。
以上是php抽象類別、介面的差異與選擇實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!