本文主要跟大家分享PHP中抽象類別和介面的用法,希望能幫助大家,我們先來跟大家分享抽象方法的概念。
1. 抽象方法
在類別中,沒有方法體的方法就是抽象方法。
abstract 可見性 function 方法名稱(參數1,.....); // 若未顯示指定可見性,則預設為public
#如:
public function hello($args); abstract function work(); // 修饰符abstract,也可以省略
2. 抽象類別
abstract class 類別名稱{
屬性;
## 屬性;## ;
抽象方法;
#}
抽象類別的特性:
抽象類別不能實例化,只能被繼承。
抽象類別不一定有抽象方法,有抽象方法的類,一定是抽象類別。
抽象方法的可見性不能是private
抽象方法在子類別中,需要重寫。
什麼時候需要用抽象類別?
有個方法,方法體不知如何寫,子類別中還必須有這個方法時,封裝成抽象方法,類別為抽象類別。
控制子類別中必須封裝某些方法時,可以用抽象方法。
當需要控制類別只能被繼承,不能被實例化時。
範例: 宣告一個人類,有一個抽象方法,工作。 宣告一個php講師類,重寫方法工作。abstract class People{ protected $age=22; public $height=1.70; abstract function work(); } class PhpTeacher extends People{ function work(){ echo "真不是php"; } }
interface Common{ abstract function work(); abstract function test($args); }
介面繼承介面 interface 介面名稱extends 父介面名稱
注意:類別的繼承是單繼承(只能有一個父類別),但介面的繼承卻是多繼承,類別對介面的實作也是多實作。
介面的實作(implements):
類別實作介面 class 類別名稱 implements 介面名稱1,介面名稱2, ...
#繼承類別同時實作介面:
類別繼承父類別同時實作介面 class 類別名稱 extends 父類別名稱implements 介面名稱
#4. 抽象類別和介面的區別
#介面是一種特殊的抽象類,介面中只包含抽象方法,沒有成員屬性。
類別實作(implements)介面時,必須完全實作介面中的所有方法;類別繼承(extends)抽象類別時,只需對需要用到的抽象方法進行重寫。
抽象類別只能單繼承,但介面卻是多繼承,類別對介面的實作也是多實作。
相關推薦:
#以上是PHP中抽象類別和介面的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!