Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 抽象与抽象类_Oop - Fatal编程技术网

Oop 抽象与抽象类

Oop 抽象与抽象类,oop,Oop,据 抽象有两种风格。一个是函数抽象,另一个是数据抽象。但是抽象类在哪里合适呢?在我看来,抽象类是一个完全不同的概念,尽管它的名字暗示它与OOP原则有关 有人能解释一下吗?对象通常将数据与功能结合在一起,抽象类也不例外。在某些情况下,提供的抽象几乎是纯数据,其函数仅提供对数据的访问(例如,集合类)。其他情况几乎相反(例如,C++中的函子提供的抽象通常是一个函数)。 当然,这些都是极端的——许多(大多数?)类介于两者之间。这些是非常不同的概念 抽象类似于黑箱的概念。输入进去,黑匣子做点什么,输出出来

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


有人能解释一下吗?

对象通常将数据与功能结合在一起,抽象类也不例外。在某些情况下,提供的抽象几乎是纯数据,其函数仅提供对数据的访问(例如,集合类)。其他情况几乎相反(例如,C++中的函子提供的抽象通常是一个函数)。
当然,这些都是极端的——许多(大多数?)类介于两者之间。

这些是非常不同的概念

抽象类似于黑箱的概念。输入进去,黑匣子做点什么,输出出来。不管黑匣子里发生了什么,你只需要知道它是有效的。现实生活中的一个例子是java的哈希函数,用户只需知道它对输入值进行哈希运算,而不管用户如何对数字进行哈希运算。黑盒就是抽象。关键是你不需要知道它是如何工作的,只需要知道它是如何工作的


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

数据抽象是与抽象类不同的概念

数据抽象- 这意味着隐藏实现并仅显示基本信息。 实际上,我们可以使用诸如public、private、protected等访问说明符来实现抽象。 例如,私有函数/变量不能在类外访问抽象只是“隐藏”。 您可以参考Geeksforgek了解更多详细信息


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

@crowso-你对答案还不满意吗?请接受其中一个答案是的,这是我的论点。但是你没有提到抽象类和抽象概念,它们是相同的还是不同的?@user581544:我的观点是,抽象类可以在不同程度上表示其中一个或两个。