您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)PHP中final關(guān)鍵字如何使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
在PHP中類(lèi)的繼承是使用最多的一個(gè)編程特性,我們可以創(chuàng)建一個(gè)基類(lèi)(父類(lèi))然后在這其中定義一些基本的方法,在我們的子類(lèi)我們可以擴(kuò)展父類(lèi)中的方法這就叫覆蓋,但是如果說(shuō)你在父類(lèi)的某些很關(guān)鍵的方法你不能被子類(lèi)繼承,因?yàn)槿绻宇?lèi)繼承了這個(gè)方法可能給程序帶來(lái)一定的麻煩,所以我們希望這個(gè)方法是“私有”的,是不能被擴(kuò)展的,這在PHP使用了final關(guān)鍵字來(lái)修飾你要不被繼承的方法。
PHP final關(guān)鍵字可以修飾類(lèi)同樣可以修改類(lèi)中的方法,但它們的作用是差不多的,即如果你使用了final關(guān)鍵字來(lái)修飾了,那么這個(gè)被修飾的類(lèi)或者方法將不能被擴(kuò)展或者繼承。你只能老老實(shí)實(shí)去引用它。如果你在類(lèi)前面使用了final,這就是說(shuō)明這個(gè)類(lèi)不能使用繼承;如果你在方法前使用了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è)陬?lèi)前和方法前都加了PHP final關(guān)鍵字來(lái)修飾我們具體的類(lèi),當(dāng)然這個(gè)類(lèi)是不能按要求來(lái)輸出的,你可以自己動(dòng)手調(diào)試下,基本的原理就這樣了,我們只要記住如果類(lèi)或者方法使用了final那么這就意味著類(lèi)不能被繼承或者子類(lèi)不能覆蓋父類(lèi)的方法。
看完上述內(nèi)容,你們對(duì)PHP中final關(guān)鍵字如何使用有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。