我是OO概念的菜鸟。我找到了一些地方,
MSDN说,封装是从客户端隐藏对象并通过方法调用它们。
封装意味着将一组相关的属性,方法和其他成员视为单个单元或对象。
我假设第一个表达式解释了封装的用法,而后者定义了封装。 即使这是一个问题,在它更具体的Java之前提出了一个问题,我更倾向于在Progess 4GL上看到这个概念的用法示例。 我最近了解了Progress 4GL的OO功能,下面是我发现的一个示例类。
CLASS [<package>.]<class-name>
[INHERITS <super-type-name> ]
[IMPLEMENTS <interface-type-name>
[,<interface-type-name>]…]
[ FINAL ]:
[ <data member> …]
[ <constructor> ]
[ <method> … ]
[ <destructor> ]
END [ CLASS ].
与Progress 4GL相关的示例将受到高度赞赏,并且已经存在一些解释封装的好答案。
答案 0 :(得分:2)
封装是从客户端隐藏对象并通过方法调用它们
这不是封装的完全定义。这只是应用它的一种方式。 MSDN 的定义更完整,但我认为它应该在 class 和数据并对数据上的操作进行封装 >命名空间
我猜你没有得到这个想法,因为,第一个定义可以来自第二个,更完整的定义。封装意味着打包数据,属性,方法操作数据等,以便数据的内部隐藏来自客户端,因此客户端只通过暴露的接口对数据进行操作(这部分是第一个定义所说的)。
答案 1 :(得分:0)
MSDN定义更合适。前者更接近抽象的定义。
然而,这些术语显然是相关的,因为在封装它们时更容易抽象出来。