# 协议扩展与默认实现

URL: https://caijiao.org/swift/08-protocol-oriented/03-protocol-extension
Source: docs/swift/08-protocol-oriented/03-protocol-extension.md
Description: 本章介绍 Swift 中协议扩展与默认实现，帮助开发者通过扩展协议提供通用功能，简化代码和增强复用性。

Swift 支持在协议中通过扩展添加默认实现，减少重复代码。

## 协议扩展

使用 `extension` 为协议添加方法或计算属性：

```swift
protocol Greetable {
    var name: String { get }
    func greet()
}

extension Greetable {
    func greet() {
        print("你好，\(name)！")
    }
}
````

## 默认实现

遵循协议的类型无需实现默认方法即可使用：

```swift
struct Person: Greetable {
    var name: String
}

let p = Person(name: "小明")
p.greet()  // 输出：你好，小明！
```

## 重写默认实现

类型可以自定义实现，覆盖协议扩展中的默认方法：

```swift
struct Dog: Greetable {
    var name: String
    func greet() {
        print("汪汪，我是狗狗 \(name)")
    }
}
```

协议扩展增强协议灵活性，实现面向协议编程的强大特性。
