封装(Encapsulation)是面向对象编程(OOP)中最基础、最核心的特性之一。
可以理解为:封装就是把数据(属性)和行为(方法)绑定在一起,并隐藏内部实现,只暴露必要的接口给外部使用。
例如:
class BankAccount {
private var balance: Double = 0 // 私有属性,外部不能直接访问
func deposit(amount: Double) {
guard amount > 0 else { return }
balance += amount
}
func withdraw(amount: Double) {
guard amount > 0, amount <= balance else { return }
balance -= amount
}
func getBalance() -> Double {
return balance
}
}
外部使用者:
let account = BankAccount()
account.deposit(amount: 1000)
account.withdraw(amount: 200)
print(account.getBalance()) // 输出:800
封装的特点
1、数据隐藏(信息隐藏):用 private、fileprivate 等访问控制,防止外部乱改数据。
2、暴露接口:提供对外方法(如 deposit()、withdraw()),控制数据的访问方式。
Swift如何实现封装?
使用访问控制符(Access Control):
1、private:只能在当前类/结构体内部访问;
2、fileprivate:只能在当前文件中访问;
3、internal:默认值,整个模块中都可以访问;
4、public:外部模块可以访问,但不能重写或继承;
5、open:外部模块可以访问,并允许继承和重写。
封装的优点
1、数据安全:外部不能随便修改关键属性(如余额);
2、控制行为:通过接口限定访问逻辑,比如不能存负数;
3、更易维护:改变内部实现不会影响外部调用者;
4、易于扩展:将功能模块化,每个类/结构体职责清晰。
总结
封装 = 数据私有 + 提供接口控制访问。
它可以隐藏细节、控制访问、保护数据,让代码更稳定可维护。
相关文章
1、Swift访问控制级别:https://fangjunyu.com/2025/04/08/swift%e8%ae%bf%e9%97%ae%e6%8e%a7%e5%88%b6%e7%ba%a7%e5%88%ab/