【发布时间】:2014-10-02 18:27:12
【问题描述】:
这些年来,我遇到的定义很少,并且从未能够清楚地理解抽象是什么。 我已经理解了 Oops 的 3 个主要概念,但是对于铭刻在这些其他概念中的这个特定概念有困难。
到目前为止,我得出了两个结论,但不确定。
- 它是一种隐藏方法(行为)的实现细节的能力,只为用户提供接口。
- 无需实际实现即可定义方法签名(即仅声明它们)。
对于面向对象编程的上下文抽象的正确定义是什么,如果不是上述之一,那么它是什么?
如果还提供支持代码将不胜感激:)
【问题讨论】:
-
抽象这个词可能太复杂了;水果呢?香蕉是一种水果。苹果是一种水果。水果这个词是一种人们觉得甜的蔬菜的抽象。
-
抽象表示
Generalization。就像Fruit是一个抽象实体,但在现实世界中没有具体的实体叫做水果;而是更具体的水果类型。同样,vehicle是一个抽象实体,在现实世界中只存在最特定类型的车辆实体。 -
我最喜欢的关于抽象的文章之一是Zed Shaw's。
-
@Rahul:我不同意:抽象并不一定意味着概括:摩天大楼是建筑物(概括),两者都可以建造/实例化。抽象是关于在不允许直接实例化/使用的情况下重新组合行为。抽象需要具体的实现,而泛化不一定需要它。