什么是封装
封装是指利用抽象将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。
数据被保护在类的内部,尽可能地隐藏内部的实现细节,只保留一些对外接口使之与外部发生联系。
其他对象只能通过已经授权的操作来与这个封装的对象进行交互。也就是说用户是无需知道对象内部的细节(当然也无从知道),但可以通过该对象对外的提供的接口来访问该对象。
基本概念
- 数据隐藏:通过将类的字段(成员变量)声明为
private
或protected
,避免直接被外部访问。只有通过类提供的公共方法(如getter
和setter
)才能访问和修改这些字段。 - 公共接口:通过公共方法(如
getter
和setter
)提供访问对象数据的方式。这样可以对数据进行控制和验证,确保数据的一致性和合法性。 - 保护数据:封装通过限制对数据的直接访问,减少了对对象状态的不安全修改和潜在的错误。
优势
- 数据保护:通过隐藏数据和提供受控的访问方法,可以防止外部代码对数据进行不合法的修改。
- 维护性:封装使得对象的内部实现与外部接口分离,可以更容易地对内部实现进行更改,而不影响外部使用者。
- 简化接口:提供简洁的公共接口,减少外部代码对类的复杂性理解,从而降低系统的耦合度。
- 代码复用:通过封装,类可以重用已有的功能而不必重新实现,有助于构建模块化和可维护的代码。