一.重寫(override):
a.基礎(chǔ)概念:
1.override(重寫):父類方法不能滿足子類,需要子類自己去擴(kuò)展一下,所以我們需要重寫父類方法:重寫是由關(guān)鍵字的override的
2.重寫是重寫父類的方法,有繼承的關(guān)系
3.隱式調(diào)用:xcode 7 bate5之后,系統(tǒng)會(huì)默認(rèn)調(diào)用super.init(沒寫出來,但實(shí)際上已經(jīng)調(diào)用了),建議手寫,提高可讀性
4.swift引入了命名控件的概念,project中都共享,不需要引入,但集成第三方框架時(shí),pod中的文件還是要引入頭文件的
b.子類方法:
幾種必選屬性的構(gòu)造函數(shù):必選屬性必須在init里完成設(shè)置初始化工作;
完成本類屬性的初始化工作后,調(diào)用父類的初始化方法,完成父類初始化;
c.構(gòu)造函數(shù):給對象初始化的方法,給對象的成員變量設(shè)置初始值:
1.相當(dāng)于OC中的initWithXXX
2.Swift支持重載,所有的構(gòu)造函數(shù)都是init;
3.構(gòu)造函數(shù)的作用:相當(dāng)于alloc/init
二.重載:(OC中的自定義構(gòu)造方法)
1.概念:方法名相同,參數(shù)個(gè)數(shù)不同;
2.可以在定義對象的時(shí)候,給對象傳入初始化值;
3.我們重載了構(gòu)造函數(shù).如果沒有實(shí)現(xiàn)默認(rèn)的構(gòu)造函數(shù),系統(tǒng)就不提供默認(rèn)的構(gòu)造函數(shù)了;
4.為什么不提供init:因?yàn)楸绢惖谋剡x屬性必須完成初始化,而默認(rèn)的初始化方法無法完成本類屬性的初始化工作;
5.重載還可以重載函數(shù)等,重載時(shí),參數(shù)個(gè)數(shù)不同
三.子類的重載構(gòu)造函數(shù):
1.給本類屬性賦值;
2.調(diào)用父類的一個(gè)構(gòu)造函數(shù);
3.總之,你得現(xiàn)解決子類自己的事情,然后用父類的方法把父類的事情也解決,才是一個(gè)好子類~~
四.可選項(xiàng)的初始化方法:
1.可選屬性的默認(rèn)值是nil(不管是String還是Int等)
2.可以不在super.init()前進(jìn)行初始化,初始值為nil
3.在給可選項(xiàng)賦值的時(shí)候,才會(huì)分配內(nèi)存空間,是延遲分配的;