根据http://www.cs.cornell.edu/courses/cs211/2006sp/Lectures/L08-abstraction/08_abstraction.html的说法
抽象有两种风格。一个是函数抽象,另一个是数据抽象。但是抽象类适合在哪里呢?据我所知,抽象类是一个完全不同的概念,尽管它的名字表明它与OOP原则有关。
有人能解释一下这件事吗?
发布于 2012-09-26 11:00:29
这是非常不同的概念。
抽象类似于黑盒的概念。输入进入,黑盒做一些事情,输出出来。黑盒里发生了什么并不重要,你所要知道的就是它是有效的。一个真实的例子是java的哈希函数,用户只需要知道它会对输入值进行哈希运算,数字是如何哈希出来的对用户来说并不重要。黑盒是抽象的。关键是你不需要知道它是如何工作的,只需要知道它是如何工作的。
抽象类(至少在Java中)是接口和完整OOP类的混合体。接口定义了任何扩展类都必须具有的方法,它在代码中约定它将正确地实现接口,并确保一切按预期工作。抽象类有这些空方法(协议),也有可以调用的完全实现的方法。
发布于 2020-08-13 18:39:07
数据抽象是一个不同于抽象类的概念。
数据抽象--这意味着隐藏了实现的,只显示必要的信息。实际上,我们可以使用public、private、protected等访问说明符来实现抽象。例如,私有函数/变量不能用于在类之外访问。抽象就是简单的“隐藏”。你可以向极客了解更多细节。
抽象类-创建抽象类/方法,以便可以在其子类中实现它,因为抽象类不知道在方法中实现什么,但它知道该方法将存在于其子类中。因此,当我们创建子类时,我们需要覆盖抽象方法来提供它的实现。
发布于 2012-09-26 10:56:15
对象通常将数据与功能结合在一起,抽象类也不例外。在某些情况下,提供的抽象几乎是纯数据,函数只提供对数据的访问(例如,集合类)。其他情况几乎是相反的(例如,在C++中由函数器提供的抽象通常是一个函数)。
当然,这些都是非常极端的--很多(大多数?)类在它们之间的某个位置。
https://stackoverflow.com/questions/12593917
复制相似问题