[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 等幾個關鍵字的用法

Source

Can I extend a class using more than 1 class in PHP?

Image Source

Class and Objects in PHP

沒有留言:

技術提供:Blogger.