概念之间的差异

Faz*_*hra 9 php java android ios

我参加了一个java程序员的面试,在几个人的问题之后,面试官问我"什么是封装和抽象"这个问题我对问题非常满意,并且我已经回答它隐藏了不必要的实现细节供用户知道.而Abstraction只向用户展示了重要的细节.在我回答后几秒钟,面试官对我提出了另一个问题.向用户显示重要细节,这意味着将不相关的数据(如实现细节)隐藏到用户.是吗?

我回答是的!

还有另外一个问题.那么抽象和封装之间有什么区别.我认为根据你的答案没有区别.

我就像我不知道,我的双手被冷冻,对我来说是一个非常糟糕的一天

如果有人向你提出这样的问题,任何人都可以解释你会如何回答

Ani*_*kur 3

封装通俗地说就是覆盖(encapsulating)的意思。

对于 Java,这意味着将代码一起编写并仅公开那些想要公开的部分。但它通常与数据隐藏相关。例如,当您将实例方法/函数定义为私有时,只能从同一个类访问它。这样您就不会直接公开实例变量/函数。为什么?因为用户与它无关。

通俗地说,抽象是一个为了隐藏其背后的复杂性而建立的概念。以计算机为例。它们是处理器的抽象,处理器进行实际计算,而芯片又涉及门。对于普通人来说,很难谈论所使用的门。所以这个概念已经被抽象到计算机上。

对于 Java 抽象来说,意味着向用户隐藏实现细节。这包括使类抽象或定义接口。所有用户接触到的是接口(一组函数或API)。他不需要知道这是内部实现。他所要做的就是知道他必须提供什么输入(参数)以及相应的输出(返回类型)。

为了更好地理解 Java 示例,请参阅问题。