深入分析PHP final關(guān)鍵字使用技巧
PHP程序員們?cè)谡莆樟?a >PHP語(yǔ)言的基礎(chǔ)知識(shí)后,通常都會(huì)通過(guò)不斷的經(jīng)驗(yàn)積累來(lái)鞏固自己所學(xué)到的知識(shí)。下面我們將為大家詳細(xì)介紹有關(guān)PHP final關(guān)鍵字的相關(guān)用法。#t#
在PHP中類的繼承是使用最多的一個(gè)編程特性,我們可以創(chuàng)建一個(gè)基類(父類)然后在這其中定義一些基本的方法,在我們的子類我們可以擴(kuò)展父類中的方法這就叫覆蓋,但是如果說(shuō)你在父類的某些很關(guān)鍵的方法你不能被子類繼承,因?yàn)槿绻宇惱^承了這個(gè)方法可能給程序帶來(lái)一定的麻煩,所以我們希望這個(gè)方法是“私有”的,是不能被擴(kuò)展的,這在PHP使用了final關(guān)鍵字來(lái)修飾你要不被繼承的方法。
PHP final關(guān)鍵字可以修飾類同樣可以修改類中的方法,但它們的作用是差不多的,即如果你使用了final關(guān)鍵字來(lái)修飾了,那么這個(gè)被修飾的類或者方法將不能被擴(kuò)展或者繼承。你只能老老實(shí)實(shí)去引用它。如果你在類前面使用了final,這就是說(shuō)明這個(gè)類不能使用繼承;如果你在方法前使用了PHP final關(guān)鍵字,這就是說(shuō)明這個(gè)方法不能被覆蓋。道理就是這么簡(jiǎn)單,讓我們也看個(gè)簡(jiǎ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()
- ?>
這個(gè)例子中,我們?cè)陬惽昂头椒ㄇ岸技恿薖HP final關(guān)鍵字來(lái)修飾我們具體的類,當(dāng)然這個(gè)類是不能按要求來(lái)輸出的,你可以自己動(dòng)手調(diào)試下,基本的原理就這樣了,我們只要記住如果類或者方法使用了final那么這就意味著類不能被繼承或者子類不能覆蓋父類的方法。