Swift構造器聲明
構造器聲明
構造器聲明會爲程序內的類,結構體或枚舉引入構造器。構造器使用關鍵字Init來聲明,遵循兩條基本形式。
結構體,枚舉,類可以有任意數量的構造器,但是類的構造器的規則和行爲是不一樣的。不像結構體和枚舉那樣,類 有兩種結構體,designed initializers 和convenience initializers,參見構造器一節。
如下的形式聲明瞭結構體,枚舉和類的指定構造器:
init(
parameters
) {statements
}
類的指定構造器將類的所有屬性直接初始化。如果類有超類,它不能調用該類的其他構造器,它只能調用超類的一個 指定構造器。如果該類從它的超類處繼承了任何屬性,這些屬性在當前類內被賦值或修飾時,必須帶哦用一個超類的 指定構造器。
指定構造器可以在類聲明的上下文中聲明,因此它不能用擴展聲明的方法加入一個類中。
結構體和枚舉的構造器可以帶哦用其他的已聲明的構造器,來委託其中一個火全部進行初始化過程。
以關鍵字convenience來聲明一個類的便利構造器:
convenience init(
parameters
) {statements
}
便利構造器可以將初始化過程委託給另一個便利構造器或類的一個指定構造器。這意味着,類的初始化過程必須 以一個將所有類屬性完全初始化的指定構造器的調用作爲結束。便利構造器不能調用超類的構造器。
你可以使用requierd關鍵字,將便利構造器和指定構造器標記爲每個子類的構造器都必須擁有的。因爲指定構造器 不被子類繼承,它們必須被立即執行。當子類直接執行所有超類的指定構造器(或使用便利構造器重寫指定構造器)時, 必需的便利構造器可以被隱式的執行,亦可以被繼承。不像方法,下標腳本那樣,你不需要爲這些重寫的構造器標註 overrride關鍵字。
查看更多關於不同聲明方法的構造器的例子,參閱構造過程一節。
構造器聲明語法
構造器聲明 → 構造器頭(Head) 泛型參數子句 可選 參數子句 構造器主體
構造器頭(Head) → 特性(Attributes)列表 可選 convenience 可選 init
構造器主體 → 代碼塊