php物件導向之繼承、多態、封裝簡介

來源:互聯網
上載者:User
1. 介面
 在php程式設計語言中介面是一個抽象類別型,是抽象方法的集合。介面通常以interface來聲明。一個類通過實現介面的方式,從而來實現介面的方法(抽象方法)。

介面定義:

interface InterAnimal{        public function speak();        public function name($name);    }//介面實現 class cat implements InterAnimal{        public function speak(){            echo "speak";        }        public function name($name){            echo "My name is ".$name;        }    }

特別注意:
* 類全部為抽象方法(不需要聲明abstract)
* 介面抽象方法是public
* 成員(欄位)必須是常量

2. 繼承
 繼承自另一個類的類被稱為該類的子類。這種關係通常用父類和孩子來比喻。子類將繼
承父類的特性。這些特性由屬性和方法組成。子類可以增加父類之外的新功能,因此子類也
被稱為父類的“擴充”。
 在PHP中,類繼承通過extends關鍵字實現。繼承自其他類的類成為子類或衍生類別,子
類所繼承的類成為父類或基類。

class Computer {    private $_name = '聯想';    public function __get($_key) {        return $this->$_key;    }    public function run() {        echo '父類run方法';    }}class NoteBookComputer extends Computer {}$notebookcomputer = new NoteBookComputer ();$notebookcomputer->run ();  //繼承父類中的run()方法echo $notebookcomputer->_name;  //通過魔法函數__get()獲得私人欄位

特別注意:
有時候並不需要父類的欄位和方法,那麼可以通過子類的重寫來修改父類的欄位和方法。

class Computer {    public $_name = '聯想';    protected function run() {        echo '我是父類';    }}//重寫其欄位、方法class NoteBookComputer extends Computer {    public $_name = 'IBM';    public function run() {        echo '我是子類';    }}

通過重寫調用父類的方法
有的時候,我們需要通過重寫的方法裡能夠調用父類的方法內容,這個時候就必須使用
文法:父類名::方法()、parent::方法()即可調用。
final關鍵字可以防止類被繼承,有些時候只想做個獨立的類,不想被其他類繼承使用。

3. 抽象類別和方法
抽象類別特性:
* 抽象類別不能產生執行個體對象,只能被繼承;
* 抽象方法一定在抽象類別中,抽象類別中不一定有抽象方法;
* 繼承一個抽象類別時,子類必須重寫父類中所有抽象方法;
* 被定義為抽象的方法只是聲明其調用方式(參數),並不實現。

abstract class Computer {    abstract function run();}final class NotebookComputer extends Computer {    public function run() {        echo '抽象類別的實現';    }}

3. 多態
多態是指OOP 能夠根據使用類的上下文來重新定義或改變類的性質或行為,或者說介面的多種不同的實現方式即為多態。

interface Computer {    public function version();    public function work();}class NotebookComputer implements Computer {    public function version() {        echo '聯想<br>';    }    public function work() {        echo '筆記本正在隨時攜帶運行!';    }}class desktopComputer implements Computer {    public function version() {        echo 'IBM';    }    public function work() {        echo '台式電腦正在工作站運行!';    }}class Person {    public function run($type) {        $type->version ();        $type->work ();    }}$person = new Person ();$desktopcomputer = new desktopComputer ();$notebookcomputer = new NoteBookComputer ();$person->run ( $notebookcomputer );

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.