swift Day05 OOP

人们应该掌握一门面向对象的语言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)