在php5中,介面是可以繼承自另外乙個介面的。這樣**的重用更有效了。要注意只有介面和介面之間使用 繼承關鍵字 extends。類實現介面必須實現其抽象方法,使用實現關鍵字 implements。
下面的這個例子定義介面user,user有兩個抽象方法 getname和setname。 又定義了介面vipuser,
繼承自user介面,並增加了和折扣相關的方法getdiscount。
最後定義了類 vip ,實現了vipuser介面。並實現了其中的三個方法。
inte***ce user {
public function getname();
public function setname($_name);
inte***ce vipuser extends user {
public function getdiscount(); //新增了獲得折扣的抽象方法.
class vip implements vipuser {
private $name;
private $discount = 0.8;// 定義折扣變數
public function getname(){ //實現getname方法
return $this->name;
public function setname($_name){//實現setname方法
$this->name = $_name;
public function getdiscount(){//實現折扣方法.
return $this->discount;
介面可以實現多繼承,這是介面很特殊的地方。注意下面的**和用法。
inte***ce user {
public function getname();
public function setname($_name);
inte***ce administrator {
public function setnews($_news);
//注意這裡的多繼承.
inte***ce newsadministrator extends user,administrator{
class newsadmin implements newsadministrator { //實現介面
public function getname(){
public function setname($_name){
public function setnews($_news){
抽象類實現介面,可以不實現其中的抽象方法,而將抽象方法的實現交付給具體能被例項化的類去處理。
inte***ce user {
public function getname();
public function setname($_name);
//abstractnormaluser 只實現了 user介面中的乙個方法,
abstract class abstractnormaluser{
protected $name;
public function getname(){
return $this->name;
//這裡實現了介面的另外乙個方法.
class normaluser extends abstractnormaluser {
public function setname($_name){
$this->name = $_name;
$normaluser = new normaluser();
$normaluser->setname("tom");
echo "name is ".$normaluser->getname();
延伸閱讀
php物件導向之 繼承
繼承是從乙個基類得到乙個或多個類的機制。繼承自另乙個類的類被稱為該類的子類。這種關係通常用父親和孩子來比喻。子類將繼承父 類的特性。這些特性由屬性和方法組成。子類可以增加父類 也稱為超類,superclass 之外的新 功能,因此子類也被稱為父類的 擴充套件 在深入學習繼承的語法之前,我們先了解一下...
PHP物件導向之介面
php與大多數物件導向程式設計語言一樣,不支援多重繼承。也就是說每個類 只能繼承乙個父類。為了解決此問題,php引入了介面。介面的思想是指定了乙個實現該介面的類必須實現的一系列方法。介面是一種特殊的抽象類,抽象類是一種特殊的類,所以介面也是一種特殊的類。為什麼說介面是一種特殊的抽象類呢?如果乙個抽象...
php物件導向 繼承
1 繼承是從乙個基類或者父類得到乙個或者多個派生類,也叫作子類的機制。2 建立繼承樹首先找到現有基類元素不適合放在一起的,或者不需要特殊處理的,一般化。3 子類預設繼承父類所有的public和protected方法,不繼承private方法或屬性 構造方法與繼承 1 構造方法需要傳參給父類方法。2 ...