[PHP] class
類別的繼承
// 基底類別 class B基底類別 { public function 方法B1($s) { echo $s; } } class C基底類別 { public function 方法C1($s) { echo $s; } } // A類別是B類別的衍生類別 class A衍生類別 extends B基底類別 { private $c; public function __construct() { $this->c = new C類別; } public function __call($method, $args) { $this->c->$method($args[0]); } } $a = new A衍生類別; $a->方法B1("abc"); $a->方法C1("def"); Prints "abcdef"
1. 承續一個類別的功能,建立出新的類別,稱之為「類別的繼承」,這時,原來的類別稱為 "超類別(superclass)" 或 "基底類別(base class)" 或是 "父類別"。
2. 繼承這個基底類別,定義出的新類別稱之為 "子類別(subclass)" 或 "衍生類別(derived class)" 或是 "擴充類別"。
3. 繼承時要用的關鍵字為 extends,寫法為 class 衍生類別 extends 基底類別
4. 衍生類別是可以不斷的衍生下去,到三層第四層...一直到第 N 層。不過PHP有個缺點,就是它不能同時繼承多個類別。換個方式說,PHP沒有所謂的多重繼承。
5. 衍生類別裡,原則上是可以使用基底類別的「方法」或是「屬性」,但是這會因為基底類別宣告時設定的存取而有差別。
基底類別的宣告 | 從衍生類別存取 | |
---|---|---|
直接存取 | 從衍生類別定義的方法存取 | |
public | O | O |
protected | X | O |
private | X | X |
6. 重要!在建立衍生類別的實體時,會自動呼叫衍生類別的建構子,但是不會自動呼叫基底類別的建構子。想要在衍生類別裡面,呼叫基底類別的建構子,要這樣呈現 parent::__construct()。解建構子也是一樣,解建構子的呼叫方法 parent::__destruct()
文字整理 ☞ [程式][PHP] 透過PHP 寫出物件導向程式基礎教學-Part 4 類別的繼承!
常數
☞ php const用法詳解☞ php中$this、static、final、const、self 等幾個關鍵字的用法
沒有留言: