首頁  >  文章  >  後端開發  >  php抽象類別和介面的差別是什麼

php抽象類別和介面的差別是什麼

青灯夜游
青灯夜游原創
2021-05-12 17:41:262574瀏覽

區別:1.介面的關鍵字是implements,抽象類別的是extends;2、介面不可宣告成員變量,抽象類別能;3、介面沒有建構函數,抽象類別有;4、介面方法預設是public類型,抽象類別不是;5、一個類別可同時實作多個接口,只能繼承於一個抽象類別。

php抽象類別和介面的差別是什麼

本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦

區別:

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抽象類別和介面的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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