我已经阅读了近100多个链接,并探究了关于它的所有问题,但是:(仍然无法理解)
数据隐藏与封装的区别
在阅读这个答案时,我读了这一行
数据隐藏是封装,但并不是所有封装都是数据隐藏。
所以经过大量的研究,我发现
1)数据隐藏是通过封装实现的,还是一种封装形式(我说得对吗)?
2)如果是的话,应用访问说明符就是数据隐藏(也是封装),但是只有封装而不是数据隐藏的机制是什么?
发布于 2013-06-19 12:06:58
简短的答案是:
1)可以在不封装的情况下实现数据隐藏,例如类中的私有常量,任何“getter”都不返回该常量。
2)应用访问修饰符,可能是数据隐藏和封装。当您公开数据时,您可以实现封装,但不能实现数据隐藏,但只能由getter和setter修改。
长话短说:
数据隐藏和封装是非常不同的东西,但是相关的概念。数据隐藏是指不泄露类的任何用户的实现细节,而封装则防止对数据进行意外更改。
我对此的最好解释是在“测试引导的面向对象系统的增长”一书中(第49页)。
作者说,封装几乎总是一件好事,但是数据隐藏可能在错误的地方,他们给出了以下示例:
以上两种方法听起来都是明智的,直到我们从数据隐藏的角度来看待它们。
在缓存的例子中,隐藏它是有意义的。但是关于应用程序日志文件名,隐藏它是没有意义的。
发布于 2015-06-08 16:51:13
Abstaction
Encapsulation
信息隐藏
封装是确定对象的状态和行为要放在一起的决定,而信息隐藏则是决定要向用户显示的封装项中的哪些,以及哪些不适合于用户。
发布于 2016-02-06 23:44:16
封装隐藏了复杂性。就像我们在创造更好的..。
但是数据隐藏意味着隐藏某些东西,在java中,我们可以使用访问修饰符来完成。
https://stackoverflow.com/questions/17189843
复制相似问题