0

可能重复:
抽象和封装之间的区别?
抽象和封装有什么区别?

我注意到在讨论 OOP 设计时,封装和抽象的概念很重要。但是,我不太确定它们之间有何不同。我读过一堆相互矛盾的文章和帖子(其中大部分来自这个网站)。

我的理解是抽象是一种分解现实世界对象复杂性的方法。这种分解可能涉及创建几个共同代表现实世界对象的对象。抽象也可以有很多层,类继承就是这种情况的一个例子。

封装是隐藏类中内部实现数据的过程。诸如访问修饰符和访问器方法之类的语言特性是其中的关键。

如果这些定义是正确的(如果我错了,请纠正我),接口将用于什么原则?抽象?因为一组现实世界的对象可以概括在一个界面中?或者封装,接口本身可以用来暴露对象的特性而不暴露内部功能。

如果可能的话,你能否提供一个简短的例子,这将清楚地区分这两个原则?

干杯。

4

2 回答 2

0

至少对我来说,理解抽象的最好方法是用这个例子思考几何图形中的时刻。假设三角形、正方形、矩形和圆形,这些元素构成了这个“几何图形”的一部分,如果你想在类模型中表示它,你可以做这样的事情

public abstract class GeometricFigures
{

    public int perimeter(); //Common Behavior
}

现在这是一个抽象类,因为这个元素在我们的世界上没有真实的表示,这没关系,因为 GeometricFigures 类不能被实例化。

至少你可以定义这个类的孩子,例如 trigule 并且这个类继承自 GeometricFigures这样

public class Triangle inherits GeometricFigures
{
    public int size1;
    public int size2;
    public int size3;
    public int perimeter( int size1, int size2, int size3);
}

的概念Abstraction允许我代表父类GeometricFigures理解这个类在现实中不存在

于 2012-05-16T16:34:49.433 回答
0

接口属于抽象类别。他们将一个类的共同特征“抽象”或分解到另一个类中,迫使所有子类遵守它们的约定并实现其所有方法。在我看来,我认为抽象和接口是代码重用,它有助于更​​易于维护的代码,而封装主要允许更大的安全措施。它们都是主要的 OOP 概念,并且确实有一些比较。

于 2012-05-16T16:37:04.347 回答