在 PHP 中,物件可以呼叫自身的方法以及繼承自父類別的方法。而在某些情況下,我們希望在一個子類別的方法中呼叫其父類別的方法,這時需要用到 PHP 物件呼叫父類別方法的方法。
下面我們就來討論如何在 PHP 中實作物件呼叫其父類別的方法。
一、透過 parent 關鍵字呼叫父類別方法
在 PHP 中,有一個關鍵字 parent
可以用來呼叫父類別中的方法。透過在子類別方法中使用 parent::method()
的形式,就可以呼叫父類別中的同名方法。
例如,我們有以下的父類別和子類別:
class Animal { public function eat() { echo 'Animal is eating...'; } } class Cat extends Animal { public function eat() { parent::eat(); echo 'Cat is eating...'; } }
在上面的程式碼中,Animal
類別有一個eat()
方法,而Cat
類別繼承了Animal
類別並覆寫了eat()
方法。在Cat
類別的eat()
方法中,透過parent::eat()
呼叫了父類別的eat()
方法。
呼叫 Cat
類別的 eat()
方法,則會輸出 Animal is eating...Cat is eating...
。
二、使用$this->parent
呼叫父類別方法
除了使用parent
關鍵字,在PHP 5.3 以上版本中,也可以透過$this->parent
的形式來呼叫父類別方法。
例如,我們可以將上面的Cat
類別改為以下形式:
class Cat extends Animal { public function eat() { $this->parent::eat(); echo 'Cat is eating...'; } }
這裡我們使用了$this->parent
調用了父類別eat()
方法,並輸出了Cat is eating...
。
三、總結
透過使用parent
關鍵字或$this->parent
,我們可以輕鬆地實作PHP 中物件呼叫其父類別的方法。
要注意的是,當父類別方法中存在可變參數時,例如:
class Animal { public function eat($food1, $food2) { echo "Animal is eating $food1 and $food2"; } } class Cat extends Animal { public function eat($food1, $food2) { //error, 不可使用parent::eat($food1, $food2) } }
在子類別中,是不允許使用parent::eat($food1 , $food2)
的形式來呼叫父類別的方法的。因為父類別中的可變參數可能會影響子類別中的行為,所以PHP 不允許這種方式,必須在子類別方法中重新定義參數,例如:
class Cat extends Animal { public function eat($food1, $food2) { parent::eat($food1, $food2); echo "Cat is eating $food1 and $food2"; } }
以上就是PHP 中物件調用父類別方法的方法的簡單介紹,希望對讀者了解PHP 物件呼叫父類別方法有所幫助。
以上是如何在PHP中實作物件呼叫其父類別的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!