封装还是抽象?

这是封装和抽象的简要定义。


抽象:


Java中的抽象过程用于隐藏某些细节,仅显示对象的基本功能。换句话说,它处理对象(接口)的外部视图。我在不同站点上看到的唯一好的示例是界面。


封装形式:


它的基本目的是借助诸如private,public,protected等修饰符隐藏对象的状态。只有在需要时,我们才通过public方法公开状态。


我们与像修饰实现什么private,public也隐藏了一方天地这只不过又是抽象的概念不必要的细节


因此,从上面的解释看来,封装是抽象的一部分,或者我们可以说它是抽象的子集。但是为什么当我们只能用抽象来处理封装术语时呢?我确信应该有一些主要的区别来区分它们,但是网上的大多数材料对两者都表示相同的意思。


尽管这个问题早些时候也曾在这个论坛上提出过,但是我再次提出具体疑问。一些答复还说抽象是一个概念,封装是实现。但是我不买这个-如果是真的,那么我可以认为提供了这两个不同的概念来使我们感到困惑。



哔哔one
浏览 307回答 3
3回答

青春有我

封装是用作抽象的一部分的策略。封装是指对象的状态-对象封装其状态并将其从外部隐藏起来;类的外部用户通过其方法与之交互,但无法直接访问类的状态。因此,该类抽象出了与状态相关的实现细节。抽象是一个更通用的术语,它也可以通过(以及其他)子类实现。例如,该接口List在标准库是用于项的序列,可以通过位置索引的抽象,的具体实例List是一个ArrayList或一个LinkedList。与List摘要交互的代码,它使用的是哪种列表的详细信息。如果不通过封装隐藏基础状态,则通常不可能实现抽象-如果类公开其内部状态,则它无法更改其内部工作方式,因此无法抽象。

一只名叫tom的猫

抽象是用更简单的术语描述事物的概念,即抽象出细节,以便专注于重要的事物(例如,在抽象艺术中也可以看到,例如,艺术家专注于图像的基本组成部分,例如颜色或形状)。同一思想通过使用继承层次结构转换为OOP,在继承层次中,更多抽象概念位于顶部,更具体的思想位于底部,它们基于抽象。在其最抽象的级别上,根本没有实现细节,也许只有很少的共性,随着抽象性的降低而增加了这些共性。例如,最顶层可能是带有单个方法的接口,而下一层则提供了几个抽象类,这些抽象类可能会也可能不会填写有关顶层的某些细节,而是通过添加自己的抽象方法进行分支,那么对于这些抽象类中的每一个,都是提供所有其余方法的实现的具体类。封装是一种技术。它可能是也可能不是用于辅助抽象,但是肯定是关于信息隐藏和/或组织的。它要求以某种方式对数据和功能进行分组-当然,良好的OOP实践要求应将它们按抽象分组。但是,还有其他用途仅有助于维护性等。

长风秋雁

封装是抽象的一部分,或者我们可以说它是抽象的子集它们是不同的概念。抽象是完善对象的所有不需要/不重要属性并仅保留最适合您的域的特征的过程。例如,对于一个人:您决定保留名字和姓氏以及SSN。年龄,身高,体重等无关紧要。抽象是设计开始的地方。封装是下一步,它将识别在抽象过程中接受的要保留的属性上适合的操作。数据与作用于它们的操作的关联。即数据和方法捆绑在一起。
打开App,查看更多内容
随时随地看视频慕课网APP