本篇文章介紹的內容是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介面則可以多個繼承)