PHP 類覆蓋(Override)重寫和最終類、最終方法
1. 含義: 一個子類繼承了父類的特征信息(私有的繼承不了),但又自己來重新定義父類繼承給自己的特征信息,這種現(xiàn)象就稱為"覆蓋"(重寫)——override。示例一: 子類使用父類的顯示信息方法2.
1. 含義: 一個子類繼承了父類的特征信息(私有的繼承不了),但又自己來重新定義父類繼承給自己的特征信息,這種現(xiàn)象就稱為"覆蓋"(重寫)——override。
示例一: 子類使用父類的顯示信息方法
2. 先考察一個下級使用上級類顯示信息而不"完全"的例子:
示例二: 子類重寫父類的顯示信息方法
3. 于是,我們在子類中,"親自"來定義一個顯示信息的方法,該方法跟父類的方法同名:(同名的目的可以認為"做同樣的事情"):
重寫的基本要求
4. 該代碼明顯有2行是跟父類的同名方法所做的事情是一樣的,則改進如下:
- 訪問控制權限: 下級類重寫上級類的同名屬性或方法時,所使用的訪問控制修飾符"不能更狹小",即:
- 上級是 public,下級只能是 public
- 上級是 protected,下級只能是 protected 和 public
- 上級是 private,下級: 此時覆蓋不了
- 方法覆蓋時,下級方法的參數(shù)要求跟上級方法的參數(shù)"一致"
- 特例: 構造方法也可以重寫,但此時不要求參數(shù)一致
- 私有屬性和私有方法的重寫問題:
- 私有屬性和方法都不能覆蓋,但其實子類可以定義跟父類私有的同名屬性或方法。只是當作一個自身的新的屬性或方法來看待而已
PHP 中的最終類和最終方法
父類中被 final 修飾的類或方法,是不能被子類所覆蓋的。也就是說,這些被 final 修飾的類或方法是"最終的",子類無法對其進行重寫。
綜上所述,PHP 中類的覆蓋重寫以及最終類、最終方法的概念對于面向?qū)ο缶幊逃兄匾囊饬x。合理地使用這些特性可以讓程序更加靈活、可擴展和安全。