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