3 回答
TA贡献1860条经验 获得超9个赞
封装是用作抽象的一部分的策略。封装是指对象的状态-对象封装其状态并将其从外部隐藏起来;类的外部用户通过其方法与之交互,但无法直接访问类的状态。因此,该类抽象出了与状态相关的实现细节。
抽象是一个更通用的术语,它也可以通过(以及其他)子类实现。例如,该接口List
在标准库是用于项的序列,可以通过位置索引的抽象,的具体实例List
是一个ArrayList
或一个LinkedList
。与List
摘要交互的代码,它使用的是哪种列表的详细信息。
如果不通过封装隐藏基础状态,则通常不可能实现抽象-如果类公开其内部状态,则它无法更改其内部工作方式,因此无法抽象。
TA贡献1803条经验 获得超3个赞
抽象是用更简单的术语描述事物的概念,即抽象出细节,以便专注于重要的事物(例如,在抽象艺术中也可以看到,例如,艺术家专注于图像的基本组成部分,例如颜色或形状)。同一思想通过使用继承层次结构转换为OOP,在继承层次中,更多抽象概念位于顶部,更具体的思想位于底部,它们基于抽象。在其最抽象的级别上,根本没有实现细节,也许只有很少的共性,随着抽象性的降低而增加了这些共性。
例如,最顶层可能是带有单个方法的接口,而下一层则提供了几个抽象类,这些抽象类可能会也可能不会填写有关顶层的某些细节,而是通过添加自己的抽象方法进行分支,那么对于这些抽象类中的每一个,都是提供所有其余方法的实现的具体类。
封装是一种技术。它可能是也可能不是用于辅助抽象,但是肯定是关于信息隐藏和/或组织的。它要求以某种方式对数据和功能进行分组-当然,良好的OOP实践要求应将它们按抽象分组。但是,还有其他用途仅有助于维护性等。
TA贡献1765条经验 获得超5个赞
封装是抽象的一部分,或者我们可以说它是抽象的子集
它们是不同的概念。
抽象是完善对象的所有不需要/不重要属性并仅保留最适合您的域的特征的过程。
例如,对于一个人:您决定保留名字和姓氏以及SSN。年龄,身高,体重等无关紧要。
抽象是设计开始的地方。
封装是下一步,它将识别在抽象过程中接受的要保留的属性上适合的操作。数据与作用于它们的操作的关联。
即数据和方法捆绑在一起。
添加回答
举报