理解封装有很多困难

Fro*_*raw 6 c++ encapsulation

我只是......我不完全确定我理解封装.也许这可能与我仍然在课堂上学习编程而没有制作任何像其他人使用的.REAL世界程序这一事实有关,但我只是不明白它想要完成什么.我理解它限制访问某些类的成员和函数.但是喜欢......从谁那里限制它?我已经看到了几个他们有私有数据成员的例子,但他们有公共的get或set方法,无论如何都可以操作数据成员.那么有什么限制或隐藏的东西呢?

我的书说如下:

"封装提供了两个重要优势:

  1. 用户代码不会无意中破坏封装对象的状态.
  2. 封装类的实现可以随着时间的推移而改变,而无需更改用户级代码."

我想我对他们使用的单词感到困惑.用户代码如何可能破坏对象的状态,或者有人能给我一个例子吗?

我知道我的问题到处都是,但在考虑封装时我的想法也是如此,所以我很难将所有关于它的想法都包含在内(..lol)

yam*_*tes 14

我最喜欢的封装示例是开车.

典型的驾驶员知道如何通过打开点火装置并踩下油门踏板使汽车前进.为了每天早上上班,他们不需要了解内部发动机燃烧的任何信息.

油门踏板为操作非常复杂的机器提供了一个非常简单的界面.意思是,真正复杂的内部细节是从驱动程序封装的.

现在,就代码而言,假设您想使用Map某种类型,但您不知道如何为您的密钥编写通用散列函数,或者如何实现任何其他底层细节.

在Java中,您可以简单地使用a HashMap,而不必担心标准库在底层正在做什么.这些细节由用户封装.