Swift 协议相对OC的改进,借鉴笔记

在OC 的使用中,协议对于继承来说,很大的一个不变之处就是,每个遵循这个协议的类,使用这个协议的方法,都必须 实现它,现在Swift 对它 ,做了改进,对协议增加了实现,如下

protocol Workable {
  func work()
}
extension Workable {
  func work() {
    print("I'm carrying bricks")
  }
}

有了上面的代码,当你创建一个遵从 Workable 协议的类或者是结构体时,就能获得 work() 方法
这只是一个默认的实现方式。因此你可以在需要的时候重新定义这个方法;如果不重新定义的话,会使用这个默认方法,当然你也可以给这个方法增加参数,等等。
使用这种方式,可以大大简化我们的代码,我们甚至什么都不需做,指定继承关系就完成了工作:

class Worker: Person, Workable {
}
class Robot: Machine, Workable {
}
...
let worker = Worker()
let robot = Robot()
worker.work() // I'm carrying bricks
robot.work() // I'm carrying bricks

有疑问的可以留言讨论哦

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,814评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,925评论 6 342
  • 软件架构: 按功能有mvc mvvm ,按照称此 有数据层,逻辑层,展示层 iOS9新特性 临时开启后台定位 ...
    Mr_Candy阅读 767评论 0 7
  • 第一章 驯龙勇士 比克,是一位无人能敌的盖世拳王。寻常的一天清晨,他从梦境中醒来,眼前的一切竟让这位骁勇的拳王大惊...
    那天雨中的一阵光明阅读 166评论 0 0