在構(gòu)造器中可以使用構(gòu)造代理器來完成部分構(gòu)造工作,類構(gòu)造器代理分為橫向代理和向上代理,橫向代理只能發(fā)生在同一類內(nèi)部,這種構(gòu)造器稱為便利構(gòu)造器,向上代理發(fā)生在繼承的情況下,在子類構(gòu)造過程中,要先調(diào)用父類構(gòu)造器初始化父類的存儲屬性,這種構(gòu)造器稱為指定構(gòu)造器
為武侯等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及武侯網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、做網(wǎng)站、武侯網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!一、構(gòu)造器調(diào)用規(guī)則
1、指定的構(gòu)造器必須調(diào)用其直接父類的指定構(gòu)造器;
2、便利構(gòu)造器必須調(diào)用其同一類中的其他構(gòu)造器;
3、便利構(gòu)造器必須最終調(diào)用一個(gè)指定構(gòu)造器結(jié)束;
class person { var name:String var age : Int func description()->String { return "\(name):\(age)" } convenienece init(){ self.init(name:"HEHE") self.age=10 } convenience init(name:String){ self.init(name:name,age:10) } init(name:String,age:Int){ self.name=name self.age=age }
class Studetn:Person { var school:String init(name:String,age:Int,school:String){ self.school=school super.init(name:name,age:age) } convenienece override init(name:String,age:Int){ self.init(name:name,age:age,school:"XXXX") } }
二、構(gòu)造過程安全檢查
1、首先分配內(nèi)存,初始化子類存儲屬性,沿構(gòu)造器鏈向上初始化父類存儲屬性,到達(dá)構(gòu)造器鏈頂部,初始化全部的存儲屬性;
2、從頂部構(gòu)造鏈往下,可以對類進(jìn)行進(jìn)一步的修改存儲屬性,調(diào)用實(shí)例方法等處理;
Swift的編譯器在構(gòu)造過程中可以運(yùn)行一些安全檢查工作,這些工作可以有效的防止屬性在初始化前被訪問,也可以防止屬性被其它的一些構(gòu)造器賦予不同的值;
安全檢查1:指定構(gòu)造器必須保證其所在類的所有存儲屬性都初始化完成,之后才能向上調(diào)用父類構(gòu)造器代理;
安全檢查2:指定構(gòu)造器必須先調(diào)用父類構(gòu)造器代理,再為繼承的屬性賦予新值,否則指定構(gòu)造器賦予的新值都會被父類中的構(gòu)造器所覆蓋;
安全檢查3:便利構(gòu)造器必須先調(diào)用同一類中的其他構(gòu)造器代理,然后再為任意屬性賦新值,否則便利構(gòu)造器賦予的值將被同一類中的其他指定構(gòu)造器所覆蓋;
安全檢查4:構(gòu)造器在第一階段構(gòu)造完成之前,不能調(diào)用實(shí)例方法,也不能讀取實(shí)例屬性;
三、構(gòu)造器繼承
Swift中子類構(gòu)造器的來源有2種,自己編寫和從父類繼承,并不是所有父類的構(gòu)造器都能自動(dòng)繼承下來,能夠從父類自動(dòng)繼承下來的構(gòu)造器,規(guī)則如下:
1、如果子類沒有定義任何指定構(gòu)造器,它將自動(dòng)繼承父類的所有指定構(gòu)造器;
2、如果子類提供了所有父類指定構(gòu)造器的實(shí)現(xiàn),無論是通過條件1繼承而來,還是自己編寫,它將自動(dòng)繼承所有父類的便利構(gòu)造器;
class Graduate:Studetn {
var special:String = ""
}
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。