我正在准备一次面试,并决定温习我的 OOP 概念。 有几百篇文章可供选择,但似乎每篇文章都有不同的描述。 有人说
抽象是“识别具有以下特征的常见模式的过程” 系统的变化; 抽象代表了共同的模式 并提供了一种指定使用哪种变体的方法”(理查德 加布里埃尔)。
并且是通过抽象类实现的。
一些 其他说
抽象意味着只向客户端显示必要的细节 物体
还有
假设在 Employee 类中有一个方法“ CalculateSalary”, 它接受 EmployeeId 作为参数并返回 作为一个整数值。现在,如果有人 他不需要关心员工是如何使用这种方法的 对象计算工资? 他唯一需要关心的是 方法的名称、其输入参数和生成的 成员,
我谷歌了一遍又一遍,但没有一个结果给我一个合适的答案。 现在,封装在所有这些中的位置在哪里? 我搜索并找到了一个 堆栈溢出问题堆栈溢出问题。即使是这个问题的答案也令人困惑 这里写着
是作为抽象的一部分使用的策略 是指对象的状态-对象封装它们的状态和 从外部隐藏它; 类的外部用户与它交互 但是不能直接访问类的状态。所以 类抽象出与其 国家。
给你的另一位知名成员说,
它们是不同的概念。
抽象是将所有的 对象的不需要/不重要的属性,只保留 最适合你的领域的特性。
现在我搞砸了整个概念。我知道抽象类、继承、访问说明符等等。我只想知道 当我在面试中被问到有关抽象和/或封装的问题时,我应该如何回答。
请不要将其标记为重复的。我知道有几个类似的问题。但是我想避免在相互矛盾的解释中产生混淆。有人能提供可靠的线索吗?指向堆栈溢出问题的链接也是受欢迎的,除非它再次造成混乱。:)
编辑: 我需要答案,有点 C # 导向