Swift中重寫和重載的使用與對(duì)比總結(jié)
前言
最近在學(xué)習(xí)swift,感覺(jué)Swift是一門大雜燴類型的語(yǔ)言,我會(huì)記錄一些我自認(rèn)為以前遇到較少或者需要重點(diǎn)記憶的語(yǔ)法特性,在此作為分享,本文詳細(xì)介紹了關(guān)于Swift重寫和重載的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。
1、重載:
- 函數(shù)名相同,參數(shù)名/參數(shù)類型/參數(shù)個(gè)數(shù)不同
- 重載函數(shù)并不僅僅局限于構(gòu)造函數(shù)
- 函數(shù)重載是面相對(duì)象程序設(shè)計(jì)語(yǔ)言的重要標(biāo)志
- OC 不支持函數(shù)重載,OC 的替代方式是 withXXX…
2、重寫:
- 也叫覆蓋,指在子類中定義一個(gè)與父類中方法同名同參數(shù)列表的方法。
- 重寫是子類的方法覆蓋父類的方法,要求方法名和參數(shù)都相同
- 因?yàn)樽宇悤?huì)繼承父類的方法,而重寫就是將從父類繼承過(guò)來(lái)的方法重新定義一次,重新填寫方法中的代碼。
- 重寫必須繼承,重載不用
假設(shè)有一個(gè)Person類,用于 “name” 和 “age” 兩個(gè)屬性,我們分別用重寫和重載方法為其添加屬性
創(chuàng)建Person類
class Person: NSObject {
var name: String // 姓名
var age: Int // 年齡
// 構(gòu)造函數(shù)
init(name: String,age: Int) {
self.name = name
self.age = age
// 必須在 super.init() 之前 初始化對(duì)象
super.init()
}
}
通過(guò)重寫方法為其添加 “l(fā)esson” 屬性
class Student: Person {
var lesson: String
/// 重寫
///
/// - Parameters:
/// - name: 姓名
/// - age: 年齡
override init(name: String, age: Int) {
lesson = "Python" // 必須放在super.init()之前
super.init(name: name, age: age)
}
}
/// 重寫實(shí)例化的對(duì)象 let s = Student(name: "Joyce", age: 18) print(s.lesson) // Python
通過(guò)重載方法為其添加 “l(fā)esson” 屬性
class Student: Person {
var lesson: String
/// 重載
///
/// - Parameters:
/// - name: 姓名
/// - age: 年齡
/// - lesson: 課程
init(name: String, age: Int, lesson:String) {
self.lesson = lesson
super.init(name: name, age: age)
}
}
/// 重載實(shí)例化的對(duì)象 let s1 = Student(name: "帥哥", age: 21, lesson: "HTML 5") print(s1.lesson) // HTML 5
總結(jié):
通過(guò)重載,可以快速為方法添加新的屬性,屬性可以通過(guò)外部傳入
重寫,只能在方法內(nèi)部設(shè)置屬性,外部無(wú)法直觀看到類的參數(shù)列表
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
深入解析Swift中switch語(yǔ)句對(duì)case的數(shù)據(jù)類型匹配的支持
這篇文章主要介紹了Swift中switch語(yǔ)句對(duì)case的數(shù)據(jù)類型匹配的支持,Swift中switch...case語(yǔ)句支持多種數(shù)據(jù)類型的匹配判斷,十分強(qiáng)大,需要的朋友可以參考下2016-04-04
Ubuntu 16.04上安裝 Swift 3.0及問(wèn)題解答
本文給大家分享的是在Ubuntu系統(tǒng)中安裝 Swift 3.0的方法和步驟,以及安裝過(guò)程中有可能遇到的問(wèn)題的解答,這里推薦給小伙伴們,希望大家能夠喜歡2016-07-07
Swift 4中一些實(shí)用的數(shù)組技巧小結(jié)
這篇文章主要給大家分享了關(guān)于Swift 4中一些實(shí)用的數(shù)組技巧,文中通過(guò)示例代碼介紹的介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用swift具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03
Swift實(shí)現(xiàn)簡(jiǎn)單計(jì)算器
這篇文章主要為大家詳細(xì)介紹了Swift實(shí)現(xiàn)簡(jiǎn)單計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Combine中錯(cuò)誤處理和Scheduler使用詳解
這篇文章主要為大家介紹了Combine中錯(cuò)誤處理和Scheduler使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
swift5.3 UIColor使用十六進(jìn)制顏色的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于swift5.3 UIColor使用十六進(jìn)制顏色的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

