Swift中的final
修飾符可以防止類(class)被繼承,還可以防止子類重寫父類的屬性、方法以及下標。需要注意的是,final
修飾符只能用於類,不能修飾結構體(struct)和枚舉(enum),因爲結構體和枚舉只能遵循協議(protocol)。雖然協議也可以遵循其他協議,但是它並不能重寫遵循的協議的任何成員,這就是結構體和枚舉不需要final
修飾的原因。
final修飾符的幾點使用原則
final
修飾符只能修飾類,表明該類不能被其他類繼承,也就是它沒資格當父類。final
修飾符也可以修飾類中的屬性、方法和下標,但前提是該類並沒有被final
修飾過。final
不能修飾結構體和枚舉。
代碼示例
final class Train {//Todo...}class MaglevTrain: Train {// 編譯失敗//Todo...}
上面代碼中,因爲Train
類被final
修飾過,所以當MaglevTrain
類繼承了Train
後,編譯器會提示錯誤。
class Train {
final func method()
{
//Todo...
}
}
class MaglevTrain: Train {
override func method()
{// 編譯失敗 //Todo...
}
}
上面的代碼中,因爲Train
類中的method
方法被final
修飾過,所以當子類MaglevTrain
重寫父類的method
方法時,編譯器會提示錯誤。