抽象和封装之间的细微差别可以概括为一个关键点:
抽象是隐藏不必要的细节以仅显示基本功能(对象的作用)。它专注于复杂系统的设计和简化。
封装是关于隐藏内部实现并通过限制对某些组件的访问(对象的内部数据和方法如何工作)来保护数据。它专注于安全性和与数据的受控交互。
简而言之:
抽象:关注对象可以做什么。
封装:重点关注如何保护对象的内部状态。
这是一个现实生活中的例子来说明抽象和封装之间的细微差别:
ATM机(自动柜员机)
1。抽象(它的作用):
当您使用 ATM 时,您仅与基本功能交互,例如:
提款
查看余额
存钱
您不需要知道这些操作在内部是如何实现的,例如银行软件内部发生的复杂流程、与银行服务器的通信,或者交易是如何处理的。 ATM 抽象了所有这些复杂性,并为您提供了一个简单的界面(您可以用它做什么)。
2。封装(如何保护):
在 ATM 内,您的个人信息(PIN、帐户余额等)会被存储和保护。您只能通过受控方法访问此信息,例如:
输入正确的 PIN 码。
机器封装(隐藏)您的数据,确保其他人无法在不使用适当渠道(例如身份验证)的情况下直接访问或修改您的余额。这种封装可确保您的数据安全并且只能以受控方式访问。