// 4.Extension 延展
//----OC中有延展 和 类目 两种。其中,延展是声明该类的私有属性和私有方法,封装性强。类目是对系统原有类 进行扩展,可以扩展属性和方法,并且,该扩展的属性和方法都是可以遗传下去的。
//----但是swift 中没有这两种的说法了,只有延展。这里的延展,表示的意义是:A.对原有类的扩展,并且只能扩展方法;B.可以扩充协议,并实现。
class Student {
var name: String?
var age: Int?
func study(){
}
}
//应用场景,如果我们已经封装好了一个Manager类,但是,在后来的使用过程,突然觉得应该跟那个类加一个功能,这时,我们可以直接用延展,不破坏原来的类的封装,并实现了扩展。我个人认为这也很好的体现了面向对象的一大特性:封装。
extension Student{
func eat(){
print("学生也是需要吃饭的")
}
}
var student_00 = Student()
student_00.study()
//使用延展方法
student_00.eat()
//比如,我们现在想这个类遵循某一个协议,这时,也可以使用延展完成。
extension Student: KeepHouseProtocol{
//因为KeepHouseProtocol是可选方法的协议,所以加@objc
@objc func clean() {
print("学生也是需要打扫教室卫生的")
}
}
原文链接:https://www.f2er.com/swift/325701.html