php 介面繼承,PHP物件導向之旅 介面的繼承

2021-10-25 20:52:51 字數 1862 閱讀 2269

在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 ...