我想知道C,C ++和Java中的所有原始数据类型都是抽象数据类型,因为它们的实现是隐藏的。
还有一件事:
我想问一下,ADT是否包含Abstract View的两个部分(可以在其上运行的所有函数)和实现视图(如何实现函数和数据类型)。那么如何在C ++中创建ADT?
在java中,可以使用Interface实现抽象视图,而使用class实现Implementation视图。
答案 0 :(得分:5)
考虑抽象与具体(这里的具体术语是我的,用于说明目的。
无法创建抽象类,具体类可以创建。当你从一个抽象类中继承并定义所有抽象方法时,它现在就具体了。
因为你可以实例化int
它不是抽象的,而是具体的
隐藏的实现不是使它抽象化,而是它尚未被定义。
如果您有一个抽象基类,那么某些功能必须由其子类定义。可见性无关紧要。您不能从int
继承它是POD(普通旧数据)类型
在C ++中std::string
有一个可见的实现,在java中,它的一部分是隐藏的(这就是为什么+可以用来连接Java中的字符串)
答案 1 :(得分:0)
ADT 是一个概念,它定义了对数据的某种操作,就像您可以在堆栈中压入或弹出一样。您可以使用任何语言以任何方式实现 ADT,但它必须包含这些操作。 Int、float、strings、list、set 等都是 ADT。现在当你用任何语言实现它们时,它们就会变成具体的类型。就像您可以在 python 中创建一个列表一样,但这将是一个具体类型,因为列表 ADT 有一个实际的代码实现。而 LIST 本身是一个抽象的概念,它具有与之相关的某些操作。