我只是...不是完全确定我了解封装。也许这与我仍在上一个类学习编程并且没有做任何事情有关。.REAL世界程序供其他人使用,但我只是不明白它在试图实现什么目标。我了解它限制了对某些类的成员和函数的访问。但是喜欢..限制谁?我已经看到了几个具有私有(private)数据成员的示例,但是它们具有公共(public)get或set方法,这些方法无论如何都可以操纵该数据成员。那么,如何限制或隐藏任何东西呢?
我的书说如下:
”
封装具有两个重要的优点:
“
我想我对他们使用的单词感到困惑。用户代码如何或可能给我举个例子,说明用户代码如何可能破坏对象的状态?
我知道我的问题到处都是,但是在考虑封装问题时,我的想法也是如此,因此在封装所有有关它的想法时我遇到了困难(.lol)
最佳答案
我最喜欢的封装示例是开车。
典型的驾驶员知道如何通过打开点火开关并踩 throttle 踏板来使汽车前进。他们不需要对内燃机的燃烧一无所知就可以每天早晨上类。
throttle 踏板提供了非常简单的界面,用于操作非常复杂的机器。意思是,真正复杂的内部细节是从驱动程序中封装的。
现在,就代码而言,您想使用某种Map
,但您不知道如何为键编写通用的哈希函数,或者如何实现其他任何基础细节。
在Java中,您可以简单地使用HashMap
,而不必担心标准库在下面做什么。这些细节由用户封装而成。