美文网首页
swift Day05 OOP

swift Day05 OOP

作者: michaeljacc | 来源:发表于2016-05-19 23:31 被阅读27次

人们应该掌握一门面向对象的语言OOP.继承 重载,和多态是三大特点

继承

首先定义一个class表示一个人类

class Person {
    let name : String
    let age : Int
     
     init(name : String, age : Int) {
     self.name = name
     self.age = age
     }
}    

然后创建一个class表示员工,当然,它也是人类

class Employee {
    let name: String
    let age: Int
    let dept: String
    
    init(name: String, age: Int, dept: String) {
        self.name = name
        self.age = age
        self.dept = dept
    }
}

这时,我们不难发现,在Person和Employee里,有很多内容都是重复的。例如,它们的某些属性是重复的,它们的init方法有部分代码也是重复的。甚至我们可以说:An Employee IS A Person。

在面向对象对象编程里,当两个类型的关系可以用IS A来描述的时候,它们就应该使用“继承”(Inheritance)来定义。考研时候的单词就这样被用上了.像下面这样:

class employee : Person {
    
    let dept : String
    
     init(name : String, age : Int, dept : dept) {

     self.dept = dept
     super.init(name: name, age: age)
     }
}
let me = Person(name : "11", age : 23)
let work = Employee(name : "11", age : 32, dept: "Development")

“为了避免基类中的方法被意外修改,我们必须明确使用override关键字来定义要重载的方法,否则编译器会报错。”
比如 Person类中有sleep()方法,想在继承类中修改sleep方法,就要在定义sleep方法的func前加上override.

多态

func selltAlert(person: Person) {
    person.sleep()
}

sleetAlert(me)
sleetAlert(worker)

当我们传递me的时候,sleepAlert的参数被 me 当成了一个Person对象;
当我们传递worker的时候,sleepAlert的参数 worker 被当成了一个Employee对象;

对于一个编程语言来说,这种可以根据上下文,对同一个类型的对象,有不同处理方式的能力,就叫做“多态”(Polymorphism)。

相关文章

  • swift Day05 OOP

    人们应该掌握一门面向对象的语言OOP.继承 重载,和多态是三大特点 继承 首先定义一个class表示一个人类 然后...

  • Swift-OOP-扩展

    概念 Swift中的扩展,有点类似于OC的分类(Category) 扩展可以为枚举、结构体、类、协议添加新功能 可...

  • Swift-OOP-Protocol

    协议可以用来定义方法、属性、下标的声明、协议可以被枚举、结构体、类遵守(多个协议之间用逗号隔开) 协议中定义方法时...

  • Swift-OOP-Property

    概念 存储属性(Stored Property) 类似于成员变量的这个概念 存储在实例的内存中 结构体、类可以定义...

  • Swift-OOP-Method

    枚举、结构体、类都可以定义实例丰富、类型丰富 实例方法:通过实例对象调用 类型方法:通过类型调用,用static或...

  • Swift-OOP-继承

    简易代码 值类型(枚举、结构体)不支持继承,只有类支持继承 没有父类的类,称为:基类 Swift并没有像OC、Ja...

  • Swift-OOP-权限控制

    访问控制(Access Control) 在访问权限控制这块,Swift提供了5个不同的访问级别(以下是从高到低排...

  • Swift 2.0 day05

    01-extension //: Playground - noun: a place where people ...

  • iOS面试准备

     具备扎实的C/C++、Objective-C编程基础,熟练掌握Swift,对OOD/OOP有深刻的理解,并具有...

  • 自律给我自由—Day005

    【叶子姑娘的自律100天挑战 Day05】 2019.01.18 Day05/100 【早起】睡得很好,准时起床运...

网友评论

      本文标题:swift Day05 OOP

      本文链接:https://www.haomeiwen.com/subject/lwngrttx.html