在開發(fā)項目的時候,很多時候為了可以更簡潔更高效的實現(xiàn)效果,會將一些通用的方法寫到一個類中,在用到的時候直接繼承就可以了,這里就用到的是php特效之一的繼承特性
類繼承(Inheritance)是面向對象編程(OOP)的三大基本特性之一(封裝、繼承、多態(tài))。在PHP中,繼承允許一個類(子類/派生類)基于另一個類(父類/基類)來構建,自動獲得父類的屬性和方法,同時可以添加新的特性或修改繼承來的行為。
繼承的核心特性
代碼復用性(Code Reusability)
子類自動繼承父類的所有public和protected屬性和方法
避免了代碼重復,符合DRY(Don't Repeat Yourself)原則
層次化分類(Hierarchical Classification)
通過繼承關系可以建立清晰的類層次結構
表現(xiàn)"一般與特殊"的關系(父類代表一般性,子類代表特殊性)
方法重寫(Method Overriding)
子類可以重新定義父類的方法(覆蓋)
運行時根據(jù)對象類型決定調用哪個版本的方法(多態(tài)性)
這里就有一個有趣的問題,當前類a繼承了類b,在a類中重新定義了方法create,這時候a 調用父類b里的方法的c方法,c方法中調用了create方法這個時候執(zhí)行的是a中的create方法還是b里面的create方法
看起來很繞,其實直接從代碼走一遍就可以知道結果了
所以結果就是a類中的方法
即使 c 方法是在父類 B 中定義的,但其中的 $this->create() 調用的是當前對象實例的方法
因為當前對象是類 A 的實例,所以調用的是類 A 的 create 方法
這種行為就是多態(tài)(Polymorphism)的體現(xiàn),子類可以改變父類方法的行為