首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抽象与抽象类

抽象与抽象类
EN

Stack Overflow用户
提问于 2012-09-26 10:51:46
回答 3查看 14.9K关注 0票数 12

根据http://www.cs.cornell.edu/courses/cs211/2006sp/Lectures/L08-abstraction/08_abstraction.html的说法

抽象有两种风格。一个是函数抽象,另一个是数据抽象。但是抽象类适合在哪里呢?据我所知,抽象类是一个完全不同的概念,尽管它的名字表明它与OOP原则有关。

有人能解释一下这件事吗?

EN

回答 3

Stack Overflow用户

发布于 2012-09-26 11:00:29

这是非常不同的概念。

抽象类似于黑盒的概念。输入进入,黑盒做一些事情,输出出来。黑盒里发生了什么并不重要,你所要知道的就是它是有效的。一个真实的例子是java的哈希函数,用户只需要知道它会对输入值进行哈希运算,数字是如何哈希出来的对用户来说并不重要。黑盒是抽象的。关键是你不需要知道它是如何工作的,只需要知道它是如何工作的。

抽象类(至少在Java中)是接口和完整OOP类的混合体。接口定义了任何扩展类都必须具有的方法,它在代码中约定它将正确地实现接口,并确保一切按预期工作。抽象类有这些空方法(协议),也有可以调用的完全实现的方法。

票数 10
EN

Stack Overflow用户

发布于 2020-08-13 18:39:07

数据抽象是一个不同于抽象类的概念。

数据抽象--这意味着隐藏了实现的,只显示必要的信息。实际上,我们可以使用public、private、protected等访问说明符来实现抽象。例如,私有函数/变量不能用于在类之外访问。抽象就是简单的“隐藏”。你可以向极客了解更多细节。

抽象类-创建抽象类/方法,以便可以在其子类中实现它,因为抽象类不知道在方法中实现什么,但它知道该方法将存在于其子类中。因此,当我们创建子类时,我们需要覆盖抽象方法来提供它的实现。

票数 3
EN

Stack Overflow用户

发布于 2012-09-26 10:56:15

对象通常将数据与功能结合在一起,抽象类也不例外。在某些情况下,提供的抽象几乎是纯数据,函数只提供对数据的访问(例如,集合类)。其他情况几乎是相反的(例如,在C++中由函数器提供的抽象通常是一个函数)。

当然,这些都是非常极端的--很多(大多数?)类在它们之间的某个位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12593917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档