Swift 初始化方法順序

2021-10-25 19:06:53 字數 1054 閱讀 4371

與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 ...