【发布时间】:2016-05-08 02:34:32
【问题描述】:
很长一段时间以来,我一直试图通过许多链接和 youtube 视频来理解封装和抽象的概念,但仍然对封装的概念有些困惑。
根据我对抽象和封装概念的理解是:
抽象只显示必要的内容
封装说明隐藏复杂性
例如:
如果我们有客户应用程序通过获取数据库连接来添加客户及其相关详细信息,例如地址。
在这种情况下,我对抽象的理解是在我们的类中只显示 addCustomer() 方法,而当调用 add 方法时我们执行的其余操作(如 getDBConnection() 和 addCustomerAddress() 隐藏在其中。
**
public void addCustomerDetails(){
getDBConnection();
addCustomer();
addCustomerAddress();
}
**
所以这里无论谁使用我们的类只需要调用 addCustomerDetails()(ieAbstraction) 并且不必担心如何建立数据库连接以及如何执行这些操作ie(隐藏细节或封装)
到目前为止,一切都很好,但在某处我读到了另一个与封装相关的定义:
数据封装是将数据和函数组合成一个称为类的单元的过程。
这可以通过将数据成员保持为私有和功能公开来实现,这样任何人都无法直接访问它。
请告诉我封装的正确定义是什么以及如何定义?
谢谢。
【问题讨论】:
-
谢谢,但我已经浏览了您之前提供的链接,但仍然有困惑,所以发布了我的问题
-
你会发现定义有点模糊,人们用词也不同。您对这些概念有扎实的了解,此时您可能应该继续编码并接受这种缺乏完全清晰的情况。它会一次又一次地发生。
-
将“许多链接和 youtube 视频”替换为“许多教科书和多年的实践经验”。