final

/*

final 關(guān)鍵字可以用在 class, func 或者 var 前面進(jìn)行修飾,表示不允許對該內(nèi)容進(jìn)行繼承或者重寫啊哦做。

和 C# 中的 sealed 相同

一般來說,不希望被繼承和重寫會有以下幾種情況

1,類或者方法的功能呢確實(shí)已經(jīng)完備了。例如 MD5, AES 加密解密的工具類

2. 子類繼承和修改是一件危險的事情。比如基類中的一個被其他方法依賴的方法,如果在子類中被重寫,可能會導(dǎo)致基類中依賴這個方法的其他方法失效。

3,為了父類中某些代碼一定會被執(zhí)行,比如基類中一些關(guān)鍵代碼在被繼承重寫后必須執(zhí)行的,比如狀態(tài)配置,認(rèn)證等等,否則會導(dǎo)致運(yùn)行時候的錯誤,如果子類重寫了基類方法而沒有調(diào)用父類的方法,就會造成問題

4,性能考慮, 提升不大

*/

// 針對第三種情況,可以這樣完善。

// 這樣,無論如何我們使用 method , 都可以保證需要的代碼一定被執(zhí)行過,而同時又給子類繼承和重寫自定義具體實(shí)現(xiàn)的機(jī)會

class Parent{

final func method(){

print("開始配置信息")

// 。。。必要的代碼

methodImp1()

// 。。。必要的代碼

print("結(jié)束配置")

}

func methodImp1(){

fatalError("子類必須重寫這個方法")

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • final 關(guān)鍵字可以用在,或者前面進(jìn)行修飾,表示不允許對該內(nèi)容進(jìn)行繼承或者重寫操作。這個關(guān)鍵字的作用和C#中的相...
    飛行的貓閱讀 360評論 0 0
  • 原創(chuàng)文章&經(jīng)驗(yàn)總結(jié)&從校招到A廠一路陽光一路滄桑 詳情請戳www.codercc.com 1. final的簡介 ...
    你聽___閱讀 8,025評論 6 22
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 08.01_面向?qū)ο?代碼塊的概述和分類)(了解)(面試的時候會問,開發(fā)不用或者很少用) A:代碼塊概述在Java...
    苦笑男神閱讀 202評論 0 1
  • 一元錢能拍出什么光景 心情 還是幻影 為什么 那是我的一元錢
    火山wj閱讀 74評論 0 0