欧美成人片一区二区三区,久久碰人妻一区二区三区,久久婷婷激情综合色综合俺也去,狂野欧美性猛交免费视频,久久夜色精品国产亚洲

21
2025/06

PHP多態(tài)調(diào)用子類方法

發(fā)布時(shí)間:2025-06-21 09:45:23
發(fā)布者:已經(jīng)寫了
瀏覽量:
0

在開發(fā)項(xiàng)目的時(shí)候,很多時(shí)候?yàn)榱丝梢愿啙嵏咝У膶?shí)現(xiàn)效果,會(huì)將一些通用的方法寫到一個(gè)類中,在用到的時(shí)候直接繼承就可以了,這里就用到的是php特效之一的繼承特性

繼承(Inheritance)是面向?qū)ο缶幊蹋∣OP)的三大基本特性之一(封裝、繼承、多態(tài))。在PHP中,繼承允許一個(gè)類(子類/派生類)基于另一個(gè)類(父類/基類)來構(gòu)建,自動(dòng)獲得父類的屬性和方法,同時(shí)可以添加新的特性或修改繼承來的行為。

繼承的核心特性

代碼復(fù)用性(Code Reusability)

    子類自動(dòng)繼承父類的所有public和protected屬性和方法

    避免了代碼重復(fù),符合DRY(Don't Repeat Yourself)原則

層次化分類(Hierarchical Classification)

    通過繼承關(guān)系可以建立清晰的類層次結(jié)構(gòu)

    表現(xiàn)"一般與特殊"的關(guān)系(父類代表一般性,子類代表特殊性)

方法重寫(Method Overriding)

    子類可以重新定義父類的方法(覆蓋)

    運(yùn)行時(shí)根據(jù)對(duì)象類型決定調(diào)用哪個(gè)版本的方法(多態(tài)性)

這里就有一個(gè)有趣的問題,當(dāng)前類a繼承了類b,在a類中重新定義了方法create,這時(shí)候a 調(diào)用父類b里的方法的c方法,c方法中調(diào)用了create方法這個(gè)時(shí)候執(zhí)行的是a中的create方法還是b里面的create方法

看起來很繞,其實(shí)直接從代碼走一遍就可以知道結(jié)果了

PHP多態(tài)調(diào)用子類方法

所以結(jié)果就是a類中的方法

即使 c 方法是在父類 B 中定義的,但其中的 $this->create() 調(diào)用的是當(dāng)前對(duì)象實(shí)例的方法

因?yàn)楫?dāng)前對(duì)象是類 A 的實(shí)例,所以調(diào)用的是類 A 的 create 方法

這種行為就是多態(tài)(Polymorphism)的體現(xiàn),子類可以改變父類方法的行為

關(guān)鍵詞:
返回列表