Swift中避免重載的final修飾符

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方法時,編譯器會提示錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章