/*
final 關鍵字可以用在 class, func 或者 var 前面進行修飾植旧,表示不允許對該內(nèi)容進行繼承或者重寫啊哦做杯缺。
和 C# 中的 sealed 相同
一般來說缓待,不希望被繼承和重寫會有以下幾種情況
1,類或者方法的功能呢確實已經(jīng)完備了巫湘。例如 MD5, AES 加密解密的工具類
2. 子類繼承和修改是一件危險的事情犀被。比如基類中的一個被其他方法依賴的方法,如果在子類中被重寫贱除,可能會導致基類中依賴這個方法的其他方法失效生闲。
3,為了父類中某些代碼一定會被執(zhí)行月幌,比如基類中一些關鍵代碼在被繼承重寫后必須執(zhí)行的碍讯,比如狀態(tài)配置,認證等等扯躺,否則會導致運行時候的錯誤捉兴,如果子類重寫了基類方法而沒有調(diào)用父類的方法,就會造成問題
4录语,性能考慮倍啥, 提升不大
*/
// 針對第三種情況,可以這樣完善澎埠。
// 這樣虽缕,無論如何我們使用 method , 都可以保證需要的代碼一定被執(zhí)行過,而同時又給子類繼承和重寫自定義具體實現(xiàn)的機會
class Parent{
final func method(){
print("開始配置信息")
// 蒲稳。彼宠。鳄虱。必要的代碼
methodImp1()
// 。凭峡。拙已。必要的代碼
print("結(jié)束配置")
}
func methodImp1(){
fatalError("子類必須重寫這個方法")
}
}