Php物件導向 抽象類別

來源:互聯網
上載者:User
Php物件導向 -- 抽象類別

抽象類別abstract:

有一種類,只能被繼承,不能執行個體化對象。原因就是這個類的定義不完整。

因為php支援定義一種,只有方法的聲明部分,而沒有方法的實現部分的不完整方法。

如果某個類,包含了這種不完整的方法,就不是不完整類,也就不能執行個體化對象。

不完整的類,稱之抽象類別

所包含的不完整的方法,稱之抽象方法。

定義:

包含抽象方法的類,就是抽象類別。

文法:

定義抽象方法,利用abstract的關鍵字,告知php那個方法為抽象方法

如果一個類包含一個抽象方法,也就是抽象類別,因此也需要使用abstract關鍵字聲明

例子:

abstract class Goods

{

public $goods_name;

public $shop_price;

public function __construct($name,$price)

{

$this->goods_name= $name;

$this->shop_price= $price;

}

//抽象方法

abstract public function sayName();

}

class GoodsBook extends Goods

{

public $pages;

public function __construct($name,$price,$pages)

{

parent::__construct($name,$price);

$this->pages= $pages;

}

// 繼承抽象類別的子類要實現抽象類別中的 抽象方法

public function sayName()

{

echo$this->goods_name;

}

}

抽象類別沒有執行個體化對象的能力,只有被繼承的能力。

如果繼承某個抽象類別的類是非抽象類別的話,就一定要將不完整的抽象方法實現,否則該類也應該是一個抽象類別。

註:子類中實現抽象類別的抽象方法時,方法名、參數要一致,存取權限要弱於抽象類別的存取權限。

例子:

abstruct class Goods

{

abstruct protected function sayName();

}

class GoodsBook extends Goods

{

public function sayName()

{

}

}

抽象類別功能總結:

在可以為子類提供公用操作的同時,限制子類所用有得方法的結構。

犧牲了執行個體化對象的功能。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.