final
final關(guān)鍵字可以用在 class ,func和var前面進(jìn)行修飾,表示不允許對(duì)內(nèi)容進(jìn)行繼承或者重寫操作。
1.權(quán)限控制
給一段代碼加上final 就意味著你告訴編譯器 這段代碼不會(huì)再被修改。
2.類或者方法的功能確實(shí)已經(jīng)完備了
對(duì)于一些輔助性質(zhì)的工具類或者方法,我們可能會(huì)考慮加上final。這樣的類有一個(gè)比較大的特點(diǎn),是很可能只包含類方法而沒有實(shí)例方法。
例如:我們常用的MD5或者AES加密解密工具類。這種工具類和方法是經(jīng)過完備驗(yàn)證和固定的,使用者只需要調(diào)用,而不會(huì)有集成或者重寫的需求。
3.子類集成和修改是一件危險(xiǎn)的事
例如:在公司的管理系統(tǒng)中我們對(duì)員工按照一定的規(guī)則進(jìn)行編號(hào),這樣通過編號(hào)我們能迅速找到任一員工。假如我們?cè)谧宇愔兄貙懥诉@個(gè)編號(hào)方法,很可能會(huì)導(dǎo)致基類中依賴員工編號(hào)的方法失效。在這種情況下,將編號(hào)方法標(biāo)記為final以確保穩(wěn)定。
4.為了父類中某些代碼一定會(huì)被執(zhí)行
有時(shí)候父類中有一些關(guān)鍵代碼是在被繼承重寫后必須執(zhí)行的(比如狀態(tài)配置,認(rèn)證等),否則將導(dǎo)致運(yùn)行時(shí)候的錯(cuò)誤。