深入分析PHP final關(guān)鍵字使用技巧
PHP程序員們在掌握了PHP語言的基礎(chǔ)知識后,通常都會通過不斷的經(jīng)驗積累來鞏固自己所學到的知識。下面我們將為大家詳細介紹有關(guān)PHP final關(guān)鍵字的相關(guān)用法。#t#
在PHP中類的繼承是使用最多的一個編程特性,我們可以創(chuàng)建一個基類(父類)然后在這其中定義一些基本的方法,在我們的子類我們可以擴展父類中的方法這就叫覆蓋,但是如果說你在父類的某些很關(guān)鍵的方法你不能被子類繼承,因為如果子類繼承了這個方法可能給程序帶來一定的麻煩,所以我們希望這個方法是“私有”的,是不能被擴展的,這在PHP使用了final關(guān)鍵字來修飾你要不被繼承的方法。
PHP final關(guān)鍵字可以修飾類同樣可以修改類中的方法,但它們的作用是差不多的,即如果你使用了final關(guān)鍵字來修飾了,那么這個被修飾的類或者方法將不能被擴展或者繼承。你只能老老實實去引用它。如果你在類前面使用了final,這就是說明這個類不能使用繼承;如果你在方法前使用了PHP final關(guān)鍵字,這就是說明這個方法不能被覆蓋。道理就是這么簡單,讓我們也看個簡單的示例吧。
- < ?PHP
- final class BaseClass {
- public function test() {
- echo "BaseClass::test() called\n";
- }
- final public function moreTesting() {
- echo "BaseClass::moreTesting() called\n";
- }
- }
- class ChildClass extends BaseClass {
- public function moreTesting() {
- echo "ChildClass::moreTesting() called\n";
- }
- }
- // Results in Fatal error: Cannot override final method BaseClass::moreTesting()
- ?>
這個例子中,我們在類前和方法前都加了PHP final關(guān)鍵字來修飾我們具體的類,當然這個類是不能按要求來輸出的,你可以自己動手調(diào)試下,基本的原理就這樣了,我們只要記住如果類或者方法使用了final那么這就意味著類不能被繼承或者子類不能覆蓋父類的方法。