淺談Java之終止繼承:Final類(lèi)和Fianl方法
前言
關(guān)鍵字Final不僅可以用來(lái)修飾變量,而且對(duì)類(lèi)及其方法的繼承也有很大的影響,本文將從類(lèi)與方法兩個(gè)方面介紹final關(guān)鍵字的功能。
Final類(lèi)
當(dāng)關(guān)鍵字final用來(lái)修飾類(lèi)時(shí),其含義是該類(lèi)不能再派生子類(lèi),換句話說(shuō),任何其他類(lèi)都不能繼承用final修飾的類(lèi),即使該類(lèi)的訪問(wèn)權(quán)限為pubilc類(lèi)型,也不能被繼承;否則,將編譯報(bào)錯(cuò)。
只有當(dāng)需要確保類(lèi)中的方法都不被重寫(xiě)時(shí)才應(yīng)該建立最終(final)類(lèi),final關(guān)鍵字將會(huì)為這些方法提供安全,沒(méi)有任何人能夠重寫(xiě)final類(lèi)中的方法,因?yàn)椴荒芾^承。
例:
package chapeter04; final class Father { } public class Sample3_13 extends Father { public static void main(String[] args) { } }
報(bào)錯(cuò):
可以看出,編譯找不到Father類(lèi)。
Final方法
當(dāng)關(guān)鍵字final修飾方法后,該方法在子類(lèi)中將無(wú)法重寫(xiě),只能繼承,例:
package chapeter04; class Father { public final void show() { System.out.println("我是final方法,可以被繼承,但是不能被重寫(xiě)"); } } class Son extends Father { } public class Sample4_15 { public static void main(String[] args) { // TODO Auto-generated method stub Son s= new Son(); s.show(); } }
運(yùn)行結(jié)果:
可以看出,代碼正常編譯運(yùn)行,final的方法show被成功繼承。但是若圖將final的方法在子類(lèi)中重寫(xiě),將會(huì)編譯報(bào)錯(cuò):
class Son extends Father { public void show() { System.out.println("重寫(xiě)Final方法"); } }
可以看出final的方法不能被繼承。
要恰當(dāng)使用final方法,只有在子類(lèi)覆蓋某個(gè)方法會(huì)帶來(lái)問(wèn)題時(shí),再將此方法設(shè)置為final方法,一般情況下不必使用。因?yàn)榉乐棺宇?lèi)覆蓋會(huì)丟失一些面向?qū)ο蟮膬?yōu)點(diǎn),包括通過(guò)覆蓋實(shí)現(xiàn)的可擴(kuò)展性。
以上所述是小編給大家介紹的Java之終止繼承:Final類(lèi)和Fianl方法詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Java為什么匿名內(nèi)部類(lèi)參數(shù)引用需要用final進(jìn)行修飾?
- Java異常處理之try...catch...finally詳解
- Java中finally和return的關(guān)系實(shí)例解析
- Java中final作用于變量、參數(shù)、方法及類(lèi)該如何處理
- Java反射如何有效的修改final屬性值詳解
- java 中JFinal getModel方法和數(shù)據(jù)庫(kù)使用出現(xiàn)問(wèn)題解決辦法
- 詳談Java中Object類(lèi)中的方法以及finalize函數(shù)作用
- Java中finalize()詳解及用法
- Java基于final修飾數(shù)據(jù)過(guò)程解析
相關(guān)文章
java web response提供文件下載功能的實(shí)例講解
下面小編就為大家分享一篇java web response提供文件下載功能的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01SpringBoot整合SSO(single sign on)單點(diǎn)登錄
這篇文章主要介紹了SpringBoot整合SSO(single sign on)單點(diǎn)登錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06java實(shí)現(xiàn)給圖片加鋪滿的網(wǎng)格式文字水印
這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)給圖片加鋪滿的網(wǎng)格式文字水印的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01java中hashCode方法與equals方法的用法總結(jié)
總的來(lái)說(shuō),Java中的集合(Collection)有兩類(lèi),一類(lèi)是List,再有一類(lèi)是Set。前者集合內(nèi)的元素是有序的,元素可以重復(fù);后者元素?zé)o序,但元素不可重復(fù)2013-10-10Spring?Cloud?OpenFeign模版化客戶端搭建過(guò)程
OpenFeign是一個(gè)顯示聲明式的WebService客戶端。使用OpenFeign能讓編寫(xiě)Web Service客戶端更加簡(jiǎn)單,這篇文章主要介紹了Spring?Cloud?OpenFeign模版化客戶端,需要的朋友可以參考下2022-06-06Java中MapStruct入門(mén)使用及對(duì)比
MapStruct是一個(gè)Java注解處理器框架,用于簡(jiǎn)化Java Bean之間的映射,本文主要介紹了Java中MapStruct入門(mén)使用及對(duì)比,感興趣的可以了解一下2023-12-12Java線程并發(fā)工具類(lèi)CountDownLatch原理及用法
這篇文章主要介紹了Java線程并發(fā)工具類(lèi)CountDownLatch原理及用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10Docker環(huán)境下Spring Boot應(yīng)用內(nèi)存飆升分析與解決場(chǎng)景分析
當(dāng)運(yùn)行一個(gè)Spring Boot項(xiàng)目時(shí),如果未設(shè)置JVM內(nèi)存參數(shù),Spring Boot默認(rèn)會(huì)采用JVM自身默認(rèn)的配置策略,接下來(lái)通過(guò)本文給大家介紹Docker環(huán)境下Spring Boot應(yīng)用內(nèi)存飆升分析與解決方法,需要的朋友參考下吧2021-08-08