淺談Java之終止繼承:Final類和Fianl方法
前言
關(guān)鍵字Final不僅可以用來修飾變量,而且對類及其方法的繼承也有很大的影響,本文將從類與方法兩個(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)鍵字將會為這些方法提供安全,沒有任何人能夠重寫final類中的方法,因?yàn)椴荒芾^承。
例:
package chapeter04;
final class Father { }
public class Sample3_13 extends Father
{
public static void main(String[] args)
{
}
}
報(bào)錯(cuò):

可以看出,編譯找不到Father類。
Final方法
當(dāng)關(guān)鍵字final修飾方法后,該方法在子類中將無法重寫,只能繼承,例:
package chapeter04;
class Father
{
public final void show()
{
System.out.println("我是final方法,可以被繼承,但是不能被重寫");
}
}
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的方法在子類中重寫,將會編譯報(bào)錯(cuò):
class Son extends Father
{
public void show()
{
System.out.println("重寫Final方法");
}
}

可以看出final的方法不能被繼承。
要恰當(dāng)使用final方法,只有在子類覆蓋某個(gè)方法會帶來問題時(shí),再將此方法設(shè)置為final方法,一般情況下不必使用。因?yàn)榉乐棺宇惛采w會丟失一些面向?qū)ο蟮膬?yōu)點(diǎn),包括通過覆蓋實(shí)現(xiàn)的可擴(kuò)展性。
以上所述是小編給大家介紹的Java之終止繼承:Final類和Fianl方法詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- Java為什么匿名內(nèi)部類參數(shù)引用需要用final進(jìn)行修飾?
- Java異常處理之try...catch...finally詳解
- Java中finally和return的關(guān)系實(shí)例解析
- Java中final作用于變量、參數(shù)、方法及類該如何處理
- Java反射如何有效的修改final屬性值詳解
- java 中JFinal getModel方法和數(shù)據(jù)庫使用出現(xiàn)問題解決辦法
- 詳談Java中Object類中的方法以及finalize函數(shù)作用
- Java中finalize()詳解及用法
- Java基于final修飾數(shù)據(jù)過程解析
相關(guān)文章
Java8中List轉(zhuǎn)Map(Collectors.toMap) 的技巧分享
在最近的工作開發(fā)之中,慢慢習(xí)慣了很多Java8中的Stream的用法,很方便而且也可以并行的去執(zhí)行這個(gè)流,這篇文章主要給大家介紹了關(guān)于Java8中List轉(zhuǎn)Map(Collectors.toMap) 的相關(guān)資料,需要的朋友可以參考下2021-07-07
Java使用集合實(shí)現(xiàn)斗地主分牌完整代碼
在斗地主游戲中,通常是將一副牌平均分成3份,每份17張牌,并留3張底牌,我們可以使用集合來實(shí)現(xiàn)這一功能,這篇文章主要給大家介紹了關(guān)于Java使用集合實(shí)現(xiàn)斗地主分牌的相關(guān)資料,需要的朋友可以參考下2024-05-05
Java之Pattern.compile函數(shù)用法詳解
這篇文章主要介紹了Java之Pattern.compile函數(shù)用法詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
關(guān)于post請求內(nèi)容無法重復(fù)獲取的解決方法
這篇文章主要介紹了關(guān)于post請求內(nèi)容無法重復(fù)獲取的解決方法,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03
使用Runtime 調(diào)用Process.waitfor導(dǎo)致的阻塞問題
這篇文章主要介紹了使用Runtime 調(diào)用Process.waitfor導(dǎo)致的阻塞問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
SpringBoot 如何根據(jù)不同profile選擇不同配置
這篇文章主要介紹了SpringBoot 如何根據(jù)不同profile選擇不同配置的操作方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Java實(shí)現(xiàn)文件分片上傳接口的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)文件分片上傳的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2022-07-07

