首頁  >  文章  >  後端開發  >  php抽象類別、介面的差異與選擇實例詳解

php抽象類別、介面的差異與選擇實例詳解

伊谢尔伦
伊谢尔伦原創
2017-07-03 09:40:241519瀏覽

區別:

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

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