淺談Java之終止繼承:Final類和Fianl方法
前言
關鍵字Final不僅可以用來修飾變量,而且對類及其方法的繼承也有很大的影響,本文將從類與方法兩個方面介紹final關鍵字的功能。
Final類
當關鍵字final用來修飾類時,其含義是該類不能再派生子類,換句話說,任何其他類都不能繼承用final修飾的類,即使該類的訪問權限為pubilc類型,也不能被繼承;否則,將編譯報錯。
只有當需要確保類中的方法都不被重寫時才應該建立最終(final)類,final關鍵字將會為這些方法提供安全,沒有任何人能夠重寫final類中的方法,因為不能繼承。
例:
package chapeter04;
final class Father { }
public class Sample3_13 extends Father
{
public static void main(String[] args)
{
}
}
報錯:

可以看出,編譯找不到Father類。
Final方法
當關鍵字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();
}
}
運行結果:

可以看出,代碼正常編譯運行,final的方法show被成功繼承。但是若圖將final的方法在子類中重寫,將會編譯報錯:
class Son extends Father
{
public void show()
{
System.out.println("重寫Final方法");
}
}

可以看出final的方法不能被繼承。
要恰當使用final方法,只有在子類覆蓋某個方法會帶來問題時,再將此方法設置為final方法,一般情況下不必使用。因為防止子類覆蓋會丟失一些面向對象的優(yōu)點,包括通過覆蓋實現(xiàn)的可擴展性。
以上所述是小編給大家介紹的Java之終止繼承:Final類和Fianl方法詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
Java8中List轉Map(Collectors.toMap) 的技巧分享
在最近的工作開發(fā)之中,慢慢習慣了很多Java8中的Stream的用法,很方便而且也可以并行的去執(zhí)行這個流,這篇文章主要給大家介紹了關于Java8中List轉Map(Collectors.toMap) 的相關資料,需要的朋友可以參考下2021-07-07
Java之Pattern.compile函數(shù)用法詳解
這篇文章主要介紹了Java之Pattern.compile函數(shù)用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08
使用Runtime 調用Process.waitfor導致的阻塞問題
這篇文章主要介紹了使用Runtime 調用Process.waitfor導致的阻塞問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
SpringBoot 如何根據(jù)不同profile選擇不同配置
這篇文章主要介紹了SpringBoot 如何根據(jù)不同profile選擇不同配置的操作方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08

