知识卡片
协议扩展提供默认实现
内容
用扩展为[[协议是只声明不实现的契约|协议]]中约定的属性或方法补上一份默认实现后,所有 遵守该协议的类型都会自动获得这份实现,不必每个类型各自重复编写一遍;某个类型如果需要 不同行为,仍可以在自己内部覆盖这份默认实现。这打破了协议原本”只能声明不能实现”的限制, 让协议从单纯的接口约定升级为可以携带共享逻辑的复用单元。发散:这正是 Swift 主推”面向 协议编程”而非传统面向对象继承的关键机制——传统继承靠单一基类向下分发共享代码,容易形成 僵化的类层级;协议+扩展则允许任意类型按需组合多个协议各自带来的默认行为,不受单继承的 结构限制。
参考来源
《Swift 4从零到精通iOS开发》第11章《类型转换、泛型、扩展与协议》