前言
關(guān)鍵字Final不僅可以用來修飾變量,而且對(duì)類及其方法的繼承也有很大的影響,本文將從類與方法兩個(gè)方面介紹final關(guān)鍵字的功能。
Final類
當(dāng)關(guān)鍵字final用來修飾類時(shí),其含義是該類不能再派生子類,換句話說,任何其他類都不能繼承用final修飾的類,即使該類的訪問權(quán)限為pubilc類型,也不能被繼承;否則,將編譯報(bào)錯(cuò)。
只有當(dāng)需要確保類中的方法都不被重寫時(shí)才應(yīng)該建立最終(final)類,final關(guān)鍵字將會(huì)為這些方法提供安全,沒有任何人能夠重寫final類中的方法,因?yàn)椴荒芾^承。
例:
05 | public class Sample3_13 extends Father |
07 | public static void main(String[] args) |
報(bào)錯(cuò):

可以看出,編譯找不到Father類。
Final方法
當(dāng)關(guān)鍵字final修飾方法后,該方法在子類中將無法重寫,只能繼承,例:
06 | public final void show() |
08 | System.out.println( "我是final方法,可以被繼承,但是不能被重寫" ); |
12 | class Son extends Father { } |
14 | public class Sample4_15 |
16 | public static void main(String[] args) |
運(yùn)行結(jié)果:

可以看出,代碼正常編譯運(yùn)行,final的方法show被成功繼承。但是若圖將final的方法在子類中重寫,將會(huì)編譯報(bào)錯(cuò):
1 | class Son extends Father |
5 | System.out.println( "重寫Final方法" ); |

可以看出final的方法不能被繼承。
要恰當(dāng)使用final方法,只有在子類覆蓋某個(gè)方法會(huì)帶來問題時(shí),再將此方法設(shè)置為final方法,一般情況下不必使用。因?yàn)榉乐棺宇惛采w會(huì)丟失一些面向?qū)ο蟮膬?yōu)點(diǎn),包括通過覆蓋實(shí)現(xiàn)的可擴(kuò)展性。
以上所述是小編給大家介紹的Java之終止繼承:Final類和Fianl方法詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!