重寫是一個物件導向程式設計概念,類似 PHP 中的類別、物件、封裝、多型、重載等概念。當在衍生類別中建立與基底類別或父類別中的方法相同的方法時,就會完成函數和類別的重寫。這兩個方法具有相同的名稱和相同數量的參數。
廣告 該類別中的熱門課程 PHP 開發人員 - 專業化 | 8 門課程系列 | 3次模擬測驗開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
讓我們來探索一下 PHP 中的重寫是如何運作的。
方法重寫的例子如下。
代碼:
class BaseClass { public function ABC() { echo "<br /> In the base class"; } } class DerivedClass extends BaseClass { // override the method ABC() of base class public function ABC() { echo "<br />In the derived class"; } } $obj1 = new BaseClass; $obj1->ABC(); $obj2 = new DerivedClass; $obj2->ABC();
輸出:
共有三個存取修飾符。
眾所周知,受保護的方法可以從基底類別和衍生類別訪問,它可以在子類別中公開,但不能私有,因為私有方法只能在父類別中存取。此外,如果類別方法的存取說明符為 public,則衍生類別中的重寫方法不能宣告為 private 和 protected
下面寫了一個使用存取修飾符進行覆蓋的範例。
代碼:
class BaseClass { private function ABC() { echo "<br/>In the base class Method : ABC"; } protected function XYZ() { echo "<br/>In the base class Method : XYZ"; } } class DerivedClass extends BaseClass { // overriding with public for wider accessibility public function ABC() { echo "<br/> In the derived class Method : ABC"; } // overriding method // with more accessibility public function XYZ() { echo "<br/>In the derived class Method : XYZ"; } } //$obj1 = new BaseClass; //$obj1->ABC(); //throws fatal error //$obj1->XYZ(); //throws fatal error $obj2 = new DerivedClass; $obj2->ABC(); $obj2->XYZ();
輸出:
final 關鍵字用於類別和方法。可以覆蓋方法和類,而不是變數。
當一個方法或類別被宣告為final時,則無法對該方法或類別進行重寫,且該類別的繼承也是不可能的。
使用final關鍵字覆蓋的例子如下。
代碼:
class BaseClass { // Final method – display // this cannot be overridden in base class final function display() { echo "<br /> In the Base class display function"; } /// method - ABC function ABC() { echo "<br /> In the Base cLass ABC function"; } } class DerivedClass extends BaseClass { function ABC() { echo "<br /> In the Derived class ABC function"; } } $obj1 = new DerivedClass; $obj1->display(); $obj1->ABC();
輸出:
A class declared as final cannot be inherited. A Final Class further have final method along with other methods. But since the class itself is declared final there is no use of declaring a final method in a final class.
The example of class overriding using final keyword is written below.
Code:
// class declared as final cannot be overridden final class BaseClass { // method - ABC function ABC() { echo "<br> In the BaseClass Method ABC function"; } // Final method - display function display() { echo "<br> In the BaseClass Method display function"; } } // here you cannot extend the base class // as the base class is declared as final $obj1 = new BaseClass; $obj1->display(); $obj1->ABC();
Output:
以上是在 PHP 中重寫的詳細內容。更多資訊請關注PHP中文網其他相關文章!