国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Swift > 正文

Swift中重寫和重載的使用與對比總結

2020-03-09 17:43:50
字體:
來源:轉載
供稿:網友

前言

最近在學習swift,感覺Swift是一門大雜燴類型的語言,我會記錄一些我自認為以前遇到較少或者需要重點記憶的語法特性,在此作為分享,本文詳細介紹了關于Swift重寫和重載的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

1、重載:

  • 函數名相同,參數名/參數類型/參數個數不同
  • 重載函數并不僅僅局限于構造函數
  • 函數重載是面相對象程序設計語言的重要標志
  • OC 不支持函數重載,OC 的替代方式是 withXXX…

2、重寫:

  • 也叫覆蓋,指在子類中定義一個與父類中方法同名同參數列表的方法。
  • 重寫是子類的方法覆蓋父類的方法,要求方法名和參數都相同
  • 因為子類會繼承父類的方法,而重寫就是將從父類繼承過來的方法重新定義一次,重新填寫方法中的代碼。
  • 重寫必須繼承,重載不用

假設有一個Person類,用于 “name” 和 “age” 兩個屬性,我們分別用重寫和重載方法為其添加屬性

創建Person類

class Person: NSObject { var name: String // 姓名 var age: Int  // 年齡 // 構造函數 init(name: String,age: Int) {  self.name = name  self.age = age  // 必須在 super.init() 之前 初始化對象  super.init() }}

通過重寫方法為其添加 “lesson” 屬性

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) }}
 /// 重寫實例化的對象 let s = Student(name: "Joyce", age: 18) print(s.lesson) // Python

通過重載方法為其添加 “lesson” 屬性

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) }}
 /// 重載實例化的對象 let s1 = Student(name: "帥哥", age: 21, lesson: "HTML 5") print(s1.lesson) // HTML 5 

總結:

通過重載,可以快速為方法添加新的屬性,屬性可以通過外部傳入

重寫,只能在方法內部設置屬性,外部無法直觀看到類的參數列表

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南郑县| 张家川| 彰化市| 开远市| 辛集市| 铁岭市| 弥渡县| 巴林左旗| 姚安县| 清新县| 屏东县| 徐水县| 容城县| 宕昌县| 晋城| 牙克石市| 泸水县| 始兴县| 南江县| 台州市| 石河子市| 外汇| 黑山县| 古田县| 遵义市| 博罗县| 林芝县| 成安县| 丰城市| 紫金县| 上林县| 图木舒克市| 镇远县| 聂荣县| 康马县| 高州市| 广西| 含山县| 惠来县| 阳新县| 淮安市|