與objective-c不同,swift
的初始化
方法需要保證
型別的所有屬性
都被初始化
,所以初始化方法的呼叫順序
就很有講究。在某個類的子類中
,初始化方法裡語句的順序並不
是隨意
的,我們需要保證在當前子類
例項的成員
初始化完成
後才能呼叫父類
的初始化
方法:
class
cat}
class
tiger
:cat
}
一般來說,子類的初始化順序是:
設定子類
自己需要的初始化
的引數,power = 10
呼叫父類
相應的初始化
方法。super.init()
對父類
中的需要改變的成員
進行設定,name = "tiger"
其中第3步
是根據具體情況決定的,如果我們在子類中不需要
對父類的成員做出改變
的話,就不存在
第3步。而在這種情況下,swift
會自動
的對父類
對應的init 方法
進行呼叫,也就是說,第2步的super.init()
也是可以不用寫
的(但是實際
上還是呼叫
的,只不過為了簡便 swift幫我們完成了)。這種情況下的初始化方法看起來就很簡單:
class
cat}
class
tiger
:cat
}
Swift 初始化順序
之前寫初始化類,一直也沒注意有啥講究,今天看到了 王巍 先生的書才發現有點說法 就記一下 1.swift 寫初始化方法,必須保證宣告的所有屬性都被初始化,也因此初始化的呼叫順序就有點說法了 2.示例 class people class temppeople people 從上面的示例來看,會發現 ...
Swift初始化方法
swift中有兩類初始化方法 designated 指定 和convenience 便利 初始化方法。convenience初始化方法必須呼叫同乙個類 self 中的designated初始化。init parameters convenience init parameters 特別要注意構造器的...
初始化順序
上次面試碰到一面試題,雖然知道但是感覺還是有必要記錄下來,利己利民,題目是關於初始化順序的,也許對很多初學者還是有點用處的。閒話不多說,先上 package initialseq public class parent public parent public int method package ...