抽象VS抽象类(abstraction vs abstract class)

2019-07-31 22:13发布

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

抽象有两种形式。 一类是功能抽象,另一个是数据抽象。 但抽象类适合在哪里? 据我看到的,抽象类是完全不同的概念,即使顾名思义,它有事情做与OOP原则。

可能有人请阐明这一些轻?

Answer 1:

这些都是非常不同的概念。

抽象是类似黑盒子的概念。 输入进去,黑匣子做一些事情,输出出来。 不要紧,黑匣子会发生什么,你必须知道的是,它的工作原理。 这方面的一个活生生的例子就是Java的哈希函数,所有用户必须知道的是,它散列输入值,不要紧的数量如何被哈希处理的用户。 黑盒子就是抽象。 问题的关键是,你不必知道它是如何工作的,只是它的作用。

抽象类(至少在爪哇)是接口和全OOP类之间的混合物。 接口定义,任何类必须有方法,它在代码中的协议,这将正确实现接口,并保证按预期一切都将正常工作。 抽象类有这些空方法(协议),也已全面实施的方法,可以被调用。



Answer 2:

在一般的对象与功能结合起来的数据,以及一个抽象类也不例外了这一点。 在一些情况下,所提供的抽象是几乎纯的数据,与功能仅提供对数据的访问(例如,集合类)。 其他情况下几乎相反的(例如,通过在C ++函子提供的抽象是通常非常的函数)。

这些,当然,是非常极端 - 许多人(?最)班它们之间的某处。



文章来源: abstraction vs abstract class
标签: oop