我只是...不是完全确定我了解封装。也许这与我仍在上一个类学习编程并且没有做任何事情有关。.REAL世界程序供其他人使用,但我只是不明白它在试图实现什么目标。我了解它限制了对某些类的成员和函数的访问。但是喜欢..限制谁?我已经看到了几个具有私有(private)数据成员的示例,但是它们具有公共(public)get或set方法,这些方法无论如何都可以操纵该数据成员。那么,如何限制或隐藏任何东西呢?

我的书说如下:


封装具有两个重要的优点:

  • 用户代码不能无意间破坏封装对象的状态。
  • 封装类的实现可以随时间变化,而无需更改用户级代码。

  • 我想我对他们使用的单词感到困惑。用户代码如何或可能给我举个例子,说明用户代码如何可能破坏对象的状态?

    我知道我的问题到处都是,但是在考虑封装问题时,我的想法也是如此,因此在封装所有有关它的想法时我遇到了困难(.lol)

    最佳答案

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

    典型的驾驶员知道如何通过打开点火开关并踩 throttle 踏板来使汽车前进。他们不需要对内燃机的燃烧一无所知就可以每天早晨上类。

    throttle 踏板提供了非常简单的界面,用于操作非常复杂的机器。意思是,真正复杂的内部细节是从驱动程序中封装的。

    现在,就代码而言,您想使用某种Map,但您不知道如何为键编写通用的哈希函数,或者如何实现其他任何基础细节。

    在Java中,您可以简单地使用HashMap,而不必担心标准库在下面做什么。这些细节由用户封装而成。

    07-28 09:45