標籤:each class font art ted 介面繼承 完全 test 需要
在類中,沒有方法體的方法就是抽象方法。abstract 可見度 function 方法名稱(參數1,.....); // 如果沒有顯示地指定可見度,則預設為public如:public function hello($args);abstract function work(); // 修飾符abstract,也可以省略
abstract class 類名{ 屬性; 方法; 抽象方法;}
抽象類別的特點:
抽象類別不能執行個體化,只能被繼承。
- 抽象類別不一定有抽象方法,有抽象方法的類,一定是抽象類別。
- 抽象方法的可見度不能是private
- 抽象方法在子類中,需要重寫。
什麼時候需要用抽象類別?
- 有個方法,方法體不知如何寫,子類中還必須有這個方法時,封裝成抽象方法,類為抽象類別。
- 控制子類中必須封裝某些方法時,可以用抽象方法。
- 當需要控制類只能被繼承,不能被執行個體化時。
例子: 聲明一個人類,有一個抽象方法,工作。 聲明一個php講師類,重寫方法工作。 abstract class People{ protected $age=22; public $height=1.70; abstract function work(); } class PhpTeacher extends People{ function work(){ } }如果一個類中,所有的方法都是抽象方法,且沒有成員屬性,則這個類被稱為介面(interface)。
interface Common{ abstract function work(); abstract function test($args);}
介面的作用:雖然PHP的類是單繼承,但可以通過介面來實現多繼承。
介面的繼承(extends):
interface 介面名稱 extends 父介面名稱注意:類的繼承是單繼承(只能有一個父類),但介面的繼承卻是多繼承,類對介面的實現也是多實現。
介面的實現(implements):
- 類實現介面 class 類名 implements 介面名稱1,介面名稱2, ...
繼承類同時實現介面:
- 類繼承父類同時實現介面 class 類名 extends 父類名 implements 介面名稱
介面是一種特殊的抽象類別,介面中只包含抽象方法,沒有成員屬性。
- 類實現(implements)介面時,必須完全實現介面中的所有方法;類繼承(extends)抽象類別時,只需對需要用到的抽象方法進行重寫。
- 抽象類別只能單繼承,但介面卻是多繼承,類對介面的實現也是多實現。
PHP中抽象方法、抽象類別和介面的用法