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,929评论 18 399
  • 20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...
    iOS_恒仔阅读 6,791评论 1 6
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 11,937评论 0 62
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 7,579评论 0 11
  • 睡梦中滴滴答答声轻扣着心门; 半梦半醒中仔细辨认原来是雨打屋檐声; 雨它来了; 大地仿佛在接受洗礼; 一片清脆、静...
    一米的部落格阅读 1,040评论 0 0