Swift中初始化辦法的次序引見。本站提示廣大學習愛好者:(Swift中初始化辦法的次序引見)文章只能為提供參考,不一定能成為您想要的結果。以下是Swift中初始化辦法的次序引見正文
與 Objective-C 分歧,Swift 的初始化辦法須要包管類型的一切屬性都被初始化。所以初始化辦法的挪用次序就很有講求。在某個類的子類中,初始化辦法裡語句的次序其實不是隨便的,我們須要包管在以後子類實例的成員初始化完成後能力挪用父類的初始化辦法:
class Cat {
var name: String
init() {
name = "cat"
}
}
class Tiger: Cat {
let power: Int
override init() {
power = 10
super.init()
name = "tiger"
}
}
普通來講,子類的初始化次序是:
1.設置子類本身須要初始化的參數,power = 10
2.挪用父類的響應的初始化辦法,super.init()
3.對父類中的須要轉變的成員停止設定,name = "tiger"
個中第三步是依據詳細情形決議的,假如我們在子類中不須要對父類的成員做出轉變的話,就不存在第 3 步。而在這類情形下,Swift 會主動地對父類的對應 init 辦法停止挪用,也就是說,第 2 步的 super.init() 也是可以不消寫的 (然則現實上照樣挪用的,只不外是為了輕便 Swift 幫我們完成了)。這類情形下的初始化辦法看起來就很簡略:
class Cat {
var name: String
init() {
name = "cat"
}
}
class Tiger: Cat {
let power: Int
override init() {
power = 10
// 固然我們沒有顯式地對 super.init() 停止挪用
// 不外因為這是初始化的最初了,Swift 替我們完成了
}
}