首頁  >  文章  >  後端開發  >  PHP的抽象類別、介面的差別與選擇

PHP的抽象類別、介面的差別與選擇

不言
不言原創
2018-04-08 15:12:381034瀏覽

本篇文章介紹的內容是PHP的抽象類別、介面的差異與選擇,現在分享給大家,有需要的朋友可以參考一下

差別:

1、對介面的使用是透過關鍵字implements。對抽象類別的使用是透過關鍵字extends。當然介面也可以透過關鍵字extends繼承。

2、介面中不可以宣告成員變數(包括類別靜態變數),但是可以宣告類別常數。抽象類別中可以宣告各種類型成員變量,實作資料的封裝。


[php] view plain# copy


<?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、一個類別可以同時實作多個接口,但一個類別只能繼承於一個抽象類別。


抽象類別還是介面。 (主要差異就是抽像只能一個繼承,而interface介面則可以多個繼承#)

  • 如果要建立一個模型,這個模型將由一些緊密相關的物件採用,就可以使用抽象類別。如果要建立將由一些不相關物件採用的功能,就使用介面。

  • 如果必須從多個來源繼承行為,就使用介面。

  • 如果知道所有類別都會共用一個公共的行為實現,就使用抽象類,並在其中實現該行為。


  • 主要差異就是抽像只能一個繼承,而interface介面則可以多個繼承

相關推薦:

php抽象類別和介面的概念與差異


##

以上是PHP的抽象類別、介面的差別與選擇的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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