我正在准备面试并决定温习我的 OOP 概念。
有数百篇文章可用,但似乎每篇文章的描述都不同。Some says
抽象是“识别具有共同模式的过程
系统性变异;抽象代表共同模式
并提供了一种指定使用哪种变体的方法”(理查德
加布里埃尔)。
并通过抽象类来实现。
Some other says
抽象意味着只向客户展示必要的细节
物体
and
假设您的 Employee 类中有一个方法“CalculateSalary”,
它以 EmployeeId 作为参数并返回该员工的工资
当月的员工的整数值。现在如果有人
想用那个方法。他不需要关心员工如何
对象计算工资?他唯一需要关心的是
方法的名称、输入参数和结果格式
成员,
我一次又一次地用谷歌搜索,但似乎没有一个结果能给我正确的答案。现在,封装在所有这些中适合什么?我搜索并找到了一个堆栈溢出问题。甚至这些问题的答案也令人困惑Here, 它说
封装是一种用作抽象一部分的策略。封装
指的是对象的状态——对象封装了它们的状态并且
将其从外部隐藏起来;类的外部用户与其交互
通过其方法,但无法直接访问类状态。所以
该类抽象出与其相关的实现细节
状态。
And here另一位知名会员说,
它们是不同的概念。
抽象是提炼出所有内容的过程
对象的不需要/不重要的属性,只保留
最适合您的领域的特征。
现在我对整个概念感到困惑。我了解抽象类、继承、访问说明符等等。我只是想知道当我在面试中被问及抽象和/或封装时,我应该如何回答。
请不要将其标记为重复。我知道还有几个类似的问题。但我想避免相互矛盾的解释造成混乱。谁能建议一个可靠的链接?也欢迎提供 stackoverflow 问题的链接,除非它再次造成混乱。 :)
编辑:我需要答案,有点面向 C#
封装:使用 getter 和 setter 等隐藏数据。
抽象:使用抽象类和接口等隐藏实现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)