Swift - 三大特性

三大特性

繼承

  • 如果我們定義一個class表示一個人
  • 他有兩個屬性表示name和age
class Person {
    let name : string
    let age : Int

    init(name : String, age : Int){
        self.name = name
        self.age = age
    }
}
  • 接下來,如果我們還需要一個類表示學生
  • 最想當然的做法是如法炮制的創建一個類似的class
class Student {
    var name : String
    var age : Int
    var ID : String

    init(name : String, age : Int, ID : String) {
        self.name = name
        self.age = age
        self.ID = ID
    }
}
  • 在Person與Student中,有很多內容都是重復的
    • 他們的某些屬性是重復的
    • 他們的init方法有部分代碼也是重復的
    • An Student IS A Person
  • 正確的寫法應該是使用繼承
class Student : person {
    var ID : String

    init(name : String, age : Int, ID : String){
        self.ID = ID
        super.init(name : name, age : age)
    }
}

重載

  • 在類中我們可以定義很多行為,比如在Person添加讀書的行為
    • 我們會發現子類是可以繼承父類的方法的
    • 但是如果子類對父類的行為不滿意,可以對父類方法進行重寫
      • 在swift中如果對父類的方法進行重寫必須在func前加override
// Person中的方法
func readBook() {
    print("在讀書")
}

// Student中的方法
override func readBook() {
    print("學生在學習")
}

多態

  • 多態有三大條件
    • 必須有繼承
    • 必須有重寫
    • 必須是父類指針指向子類對象
// 定義教師類
class Teacher : Person {
    override func readBook() {
        print("老師在備課")
    }
}

// 定義測試方法
func test(person : Person) {
    person.readBook()
}

// 創建對象
let p = Person(name : "ye", age : 20)
let stu = Student(name: "lmj", age: 19, ID: "110")
let tea = Teacher(name: "why", age: 18)

// 測試
test(p)
test(stu)
test(tea)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,739評論 18 399
  • 20- 枚舉,枚舉原始值,枚舉相關值,switch提取枚舉關聯值 Swift枚舉: Swift中的枚舉比OC中的枚...
    iOS_恒仔閱讀 2,313評論 1 6
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,136評論 0 62
  • 一:java概述:1,JDK:Java Development Kit,java的開發和運行環境,java的開發工...
    ZaneInTheSun閱讀 2,686評論 0 11
  • 睡夢中滴滴答答聲輕扣著心門; 半夢半醒中仔細辨認原來是雨打屋檐聲; 雨它來了; 大地仿佛在接受洗禮; 一片清脆、靜...
    一米的部落格閱讀 149評論 0 0