任何人都可以告诉我抽象数据类型和接口之间的区别吗? 我遇到了一个奇怪的问题,就是说,我无法区分抽象数据类型和类?我们可以用ADT创建一个类,或者ADT本身就是一个类??
答案 0 :(得分:2)
抽象数据类型是描述具有Java类所体现的属性(在某种程度上)的实体的通用数学术语。因此,您可以将Java类视为ADT概念实现的一个示例。来自Wikipedia的一些相关引用:
抽象数据类型是间接定义的,只能通过可能对其执行的操作以及对这些操作的影响(以及可能的成本)的数学约束来定义。
抽象数据类型纯粹是理论实体,用于(除其他外)简化抽象算法的描述,分类和评估数据结构,以及正式描述编程语言的类型系统。但是,ADT可以通过特定数据类型或数据结构以多种方式和许多编程语言实现。
答案 1 :(得分:0)
ADT是一种抽象数据类型。 ADT没有实现,它通常是用于理论和分析的术语。例如,Stack ADT可能具有以下功能:
Push(X)
Pop()
Peek()
Class是属性/属性和函数/方法的集合。在大多数面向对象的编程语言中,类是实现抽象和继承的主要方式。
Stack的类可能如下所示:
public class Stack {
private LinkedList<Integer> m_stack;
public Stack() {
// some code
}
public void push(int item) {
// some code
}
public int pop() {
// some code
}
public int peek() {
// some code
}
}
在Java中,还有abstract class
个es。这些是不实现所有方法的类。例如,我们可以定义一个抽象Stack:
public abstract class Stack {
protected Collection<Integer> m_stack;
public Stack();
public void push(int item);
public int pop();
public int peek();
}