抽象和封装有何不同?

2023-11-21

我正在准备面试并决定温习我的 OOP 概念。 有数百篇文章可用,但似乎每篇文章的描述都不同。Some says

抽象是“识别具有共同模式的过程 系统性变异;抽象代表共同模式 并提供了一种指定使用哪种变体的方法”(理查德 加布里埃尔)。

并通过抽象类来实现。

Some other says

抽象意味着只向客户展示必要的细节 物体

and

假设您的 Employee 类中有一个方法“CalculateSalary”, 它以 EmployeeId 作为参数并返回该员工的工资 当月的员工的整数值。现在如果有人 想用那个方法。他不需要关心员工如何 对象计算工资?他唯一需要关心的是 方法的名称、输入参数和结果格式 成员,

我一次又一次地用谷歌搜索,但似乎没有一个结果能给我正确的答案。现在,封装在所有这些中适合什么?我搜索并找到了一个堆栈溢出问题。甚至这些问题的答案也令人困惑Here, 它说

封装是一种用作抽象一部分的策略。封装 指的是对象的状态——对象封装了它们的状态并且 将其从外部隐藏起来;类的外部用户与其交互 通过其方法,但无法直接访问类状态。所以 该类抽象出与其相关的实现细节 状态。

And here另一位知名会员说,

它们是不同的概念。

抽象是提炼出所有内容的过程 对象的不需要/不重要的属性,只保留 最适合您的领域的特征。

现在我对整个概念感到困惑。我了解抽象类、继承、访问说明符等等。我只是想知道当我在面试中被问及抽象和/或封装时,我应该如何回答。

请不要将其标记为重复。我知道还有几个类似的问题。但我想避免相互矛盾的解释造成混乱。谁能建议一个可靠的链接?也欢迎提供 stackoverflow 问题的链接,除非它再次造成混乱。 :)

编辑:我需要答案,有点面向 C#


封装:使用 getter 和 setter 等隐藏数据。

抽象:使用抽象类和接口等隐藏实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

抽象和封装有何不同? 的相关文章

随机推荐