为了账号安全,请及时绑定邮箱和手机立即绑定

封装还是抽象?

封装还是抽象?

C#
哔哔one 2019-12-06 14:06:27
这是封装和抽象的简要定义。抽象:Java中的抽象过程用于隐藏某些细节,仅显示对象的基本功能。换句话说,它处理对象(接口)的外部视图。我在不同站点上看到的唯一好的示例是界面。封装形式:它的基本目的是借助诸如private,public,protected等修饰符隐藏对象的状态。只有在需要时,我们才通过public方法公开状态。我们与像修饰实现什么private,public也隐藏了一方天地这只不过又是抽象的概念不必要的细节因此,从上面的解释看来,封装是抽象的一部分,或者我们可以说它是抽象的子集。但是为什么当我们只能用抽象来处理封装术语时呢?我确信应该有一些主要的区别来区分它们,但是网上的大多数材料对两者都表示相同的意思。尽管这个问题早些时候也曾在这个论坛上提出过,但是我再次提出具体疑问。一些答复还说抽象是一个概念,封装是实现。但是我不买这个-如果是真的,那么我可以认为提供了这两个不同的概念来使我们感到困惑。
查看完整描述

3 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

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

抽象是一个更通用的术语,它也可以通过(以及其他)子类实现。例如,该接口List在标准库是用于项的序列,可以通过位置索引的抽象,的具体实例List是一个ArrayList或一个LinkedList。与List摘要交互的代码,它使用的是哪种列表的详细信息。

如果不通过封装隐藏基础状态,则通常不可能实现抽象-如果类公开其内部状态,则它无法更改其内部工作方式,因此无法抽象。



查看完整回答
反对 回复 2019-12-07
?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

抽象是用更简单的术语描述事物的概念,即抽象出细节,以便专注于重要的事物(例如,在抽象艺术中也可以看到,例如,艺术家专注于图像的基本组成部分,例如颜色或形状)。同一思想通过使用继承层次结构转换为OOP,在继承层次中,更多抽象概念位于顶部,更具体的思想位于底部,它们基于抽象。在其最抽象的级别上,根本没有实现细节,也许只有很少的共性,随着抽象性的降低而增加了这些共性。

例如,最顶层可能是带有单个方法的接口,而下一层则提供了几个抽象类,这些抽象类可能会也可能不会填写有关顶层的某些细节,而是通过添加自己的抽象方法进行分支,那么对于这些抽象类中的每一个,都是提供所有其余方法的实现的具体类。

封装是一种技术。它可能是也可能不是用于辅助抽象,但是肯定是关于信息隐藏和/或组织的。它要求以某种方式对数据和功能进行分组-当然,良好的OOP实践要求应将它们按抽象分组。但是,还有其他用途仅有助于维护性等。



查看完整回答
反对 回复 2019-12-07
?
长风秋雁

TA贡献1757条经验 获得超7个赞

封装是抽象的一部分,或者我们可以说它是抽象的子集


它们是不同的概念。


抽象是完善对象的所有不需要/不重要属性并仅保留最适合您的域的特征的过程。


例如,对于一个人:您决定保留名字和姓氏以及SSN。年龄,身高,体重等无关紧要。


抽象是设计开始的地方。


封装是下一步,它将识别在抽象过程中接受的要保留的属性上适合的操作。数据与作用于它们的操作的关联。

即数据和方法捆绑在一起。



查看完整回答
反对 回复 2019-12-07
  • 3 回答
  • 0 关注
  • 307 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信