Swift基礎(chǔ)-重載/重寫

一.重寫(override):

a.基礎(chǔ)概念:
1.override(重寫):父類方法不能滿足子類,需要子類自己去擴(kuò)展一下,所以我們需要重寫父類方法:重寫是由關(guān)鍵字的override的
2.重寫是重寫父類的方法,有繼承的關(guān)系

3.隱式調(diào)用:xcode 7 bate5之后,系統(tǒng)會默認(rèn)調(diào)用super.init(沒寫出來,但實(shí)際上已經(jīng)調(diào)用了),建議手寫,提高可讀性
4.swift引入了命名控件的概念,project中都共享,不需要引入,但集成第三方框架時,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ù)個數(shù)不同;
2.可以在定義對象的時候,給對象傳入初始化值;
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òu)造函數(shù):

1.給本類屬性賦值;
2.調(diào)用父類的一個構(gòu)造函數(shù);
3.總之,你得現(xiàn)解決子類自己的事情,然后用父類的方法把父類的事情也解決,才是一個好子類~~

四.可選項(xiàng)的初始化方法:

1.可選屬性的默認(rèn)值是nil(不管是String還是Int等)
2.可以不在super.init()前進(jìn)行初始化,初始值為nil
3.在給可選項(xiàng)賦值的時候,才會分配內(nèi)存空間,是延遲分配的;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 123.繼承 一個類可以從另外一個類繼承方法,屬性和其他特征。當(dāng)一個類繼承另外一個類時, 繼承類叫子類, 被繼承的...
    無灃閱讀 1,499評論 2 4
  • 下標(biāo)腳本 下標(biāo)腳本 可以定義在類、結(jié)構(gòu)體和枚舉這些目標(biāo)中,可以認(rèn)為是訪問集合(collection),列表(li...
    cht005288閱讀 543評論 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,203評論 1 10
  • 構(gòu)造過程是使用類、結(jié)構(gòu)體或枚舉類型的實(shí)例之前的準(zhǔn)備過程。在新實(shí)例可用前必須執(zhí)行這個過程,具體操作包括設(shè)置實(shí)例中每個...
    莽原奔馬668閱讀 762評論 0 3
  • 官方文檔 初始化 Initialization是為準(zhǔn)備使用類,結(jié)構(gòu)體或者枚舉實(shí)例的一個過程。這個過程涉及了在實(shí)例里...
    hrscy閱讀 1,207評論 0 1

友情鏈接更多精彩內(nèi)容