我正在准备面试,决定复习一下我的OOP概念。 有成百上千的文章,但似乎每个人的描述都不一样。 一些说
抽象是"识别具有>系统性变化的共同模式的过程。 系统性的变化的过程;一个抽象代表了共同的模式 并提供一种方法来指定使用哪种变体"(Richard Gabriel)。
并通过抽象类来实现。
一些其他说
抽象意味着只向客户展示必要的细节的 对象
和
假设你的Employee类中有一个方法"CalculateSalary"、 该方法以EmployeeId为参数,以整数形式返回该员工当前月份的工资。 员工当前月份的工资为整数。现在,如果有人 想使用这个方法。他不需要关心Employee 对象是如何计算工资的?他唯一需要关心的是 方法的名称,它的输入参数和结果的格式。 成员、
我一遍又一遍地在网上搜索,但似乎没有一个结果能给我一个合适的答案。 **现在,封装在这些方面的作用是什么? 我搜索了一下,发现了一个堆栈溢出问题。即使是那个问题的答案也是令人困惑的 这里,它说
封装是作为抽象的一部分使用的策略。封装 指的是对象的状态--对象将其状态封装起来并 从外部隐藏起来;类的外部用户与它进行交互 通过它的方法,但不能直接访问类的状态。所以 类抽象了与它的状态有关的实现细节。 状态。
而这里另一位著名的成员说、
它们是不同的概念。 >; 抽象是提炼掉对象的所有 一个对象的不需要的/不重要的属性,只保留最适合你的领域的 最适合你的领域的特性。
现在我对整个概念感到很困惑。我知道抽象类、继承、访问指定器和所有这些。我只想知道**当我在面试中被问及抽象和/或封装时,我应该如何回答。
请不要把它标记为重复的。我知道有几个类似的问题。但我想避免在相互矛盾的解释中产生混乱。谁能推荐一个可信的链接?也欢迎链接到stackoverflow问题,除非它再次造成混乱。)
编辑:我需要答案,有点面向c#的意思。