现在我知道有大量的文章和问题来处理这个问题,我已经经历了其中的大部分,我需要知道我的理解是否准确。
抽象:处理复杂性的一种方法。我们基本上确定了最基本的基本要素,而忽略了非必要的细节。一种简化。
封装:将事物封装到一个单独的黑匣子中的过程。黑匣子提供不同的服务,但一切都是一个单一的单位。
关系:抽象给了我们接口(本质)和实现(非本质)之间的清晰区分。现在,当这些想法被实现时,非必需品进入黑匣子,而接口则为我们提供服务。换句话说,抽象概念的实现是封装性的。
编程术语中的:接口和抽象类用于定义抽象出的概念。扩展或实现这些的具体类是我们的黑匣子(封装)。访问器、变异器和修饰符用于改进黑匣子。因此,基本上,封装的好坏取决于我们的抽象有多好。
发布于 2016-08-30 08:01:14
你对这些概念的理解对我来说似乎很好。我要补充的唯一一点是,封装本身并不一定与抽象相关。在OOP中,封装是指对象的内部状态,即使它们不扩展抽象超类或实现接口。
用具体的术语来分解这个概念,我想说是隐藏外部提供的某些服务的实现的过程(因此以后可以修改或更改,而不需要更改封装对象之外的任何内容),同时向与其交互的其他对象/用户提供相同的“视图”,即相同的可用接口(对象的公开方法)。
也就是说,您可以说封装是抽象的一种需求:如果您不“封装”您想要抽象的内容,这意味着您提供的具体实现对于所有扩展/实现它的对象来说都是相同的,从而失去了任何抽象。
https://stackoverflow.com/questions/39221491
复制相似问题