PHP程序員們在掌握了
在PHP中類的繼承是使用最多的一個編程特性,我們可以創建一個基類(父類)然後在這其中定義一些基本的方法,在我們的子類我們可以擴展父類中的方法這就叫覆蓋,但是如果說你在父類的某些很關鍵的方法你不能被子類繼承,因為如果子類繼承了這個方法可能給程序帶來一定的麻煩,所以我們希望這個方法是“私有”的,是不能被擴展的,這在PHP使用了final關鍵字來修飾你要不被繼承的方法。
PHP final關鍵字可以修飾類同樣可以修改類中的方法,但它們的作用是差不多的,即如果你使用了final關鍵字來修飾了,那麼這個被修飾的類或者方法將不能被擴展或者繼承。你只能老老實實去引用它。如果你在類前面使用了final,這就是說明這個類不能使用繼承;如果你在方法前使用了PHP final關鍵字,這就是說明這個方法不能被覆蓋。道理就是這麼簡單,讓我們也看個簡單的示例吧。
- < ?PHP
- final class BaseClass {
- public function test() {
- echo "BaseClass::test() calledn";
- }
- final public function moreTesting() {
- echo "BaseClass::moreTesting() calledn";
- }
- }
- class ChildClass extends BaseClass {
- public function moreTesting() {
- echo "ChildClass::moreTesting() calledn";
- }
- }
- // Results in Fatal error: Cannot override final method BaseClass::moreTesting()
- ?>
這個例子中,我們在類前和方法前都加了PHP final關鍵字來修飾我們具體的類,當然這個類是不能按要求來輸出的,你可以自己動手調試下,基本的原理就這樣了,我們只要記住如果類或者方法使用了final那麼這就意味著類不能被繼承或者子類不能覆蓋父類的方法。