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 );
相關推薦:
以上是php物件導向之繼承、多型、封裝簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!