【发布时间】:2014-09-21 15:51:19
【问题描述】:
在采访中,我被要求解释抽象和封装之间的区别。我的回答是这样的
抽象允许我们以最简单的方式表示复杂的现实世界。它是识别对象应具备的相关品质和行为的过程;换句话说,代表必要的特征而不代表背景细节。
封装是一个将对象的所有内部细节隐藏在外部现实世界之外的过程。 “封装”这个词,就像“封闭”成一个“胶囊”。它限制客户端查看实现抽象行为的内部视图。
我认为上面的回答让面试官信服了,但后来有人问我,如果两者的目的都是隐藏,那么为什么需要使用封装。当时我对此并没有很好的答案。
我应该添加什么以使我的答案更完整?
【问题讨论】:
-
这是对这个问题的准确答案,stackoverflow.com/questions/742341/…
-
我曾经回答过同样的问题:“封装更多是对象分类的概念(至少实际上),而抽象在大多数情况下是方法和函数的属性。所以两者都适用于不同的OOP 家族的成员。”
标签: oop encapsulation abstraction