0

谁能告诉我抽象数据类型和接口之间的区别?我遇到了一个奇怪的问题,就是我无法区分抽象数据类型和类?我们可以用ADT创建一个类还是ADT本身就是一个类?

4

2 回答 2

2

抽象数据类型是一个通用数学术语,描述具有 Java 类(在某种程度上)体现的属性的实体。因此,您可以将 Java 类视为 ADT 概念实现的示例。来自维基百科的一些相关引用:

抽象数据类型是间接定义的,仅由可能对其执行的操作以及对这些操作的效果(和可能的成本)的数学约束来定义。

抽象数据类型是纯粹的理论实体,用于(除其他外)简化抽象算法的描述、分类和评估数据结构以及正式描述编程语言的类型系统。但是,ADT 可以通过特定的数据类型或数据结构以多种方式和多种编程语言来实现。

于 2013-09-19T16:57:34.450 回答
0

ADT 是一种抽象数据类型。ADT 没有实现,它通常是用于理论和分析的术语。例如,堆栈 ADT 可能具有以下功能:

Push(X)
Pop()
Peek()

类是属性/属性和函数/方法的集合。在大多数面向对象的编程语言中,类是完成抽象和继承的主要方式。

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 classes。这些是不实现所有方法的类。例如,我们可以定义一个抽象 Stack:

public abstract class Stack {
  protected Collection<Integer> m_stack;  

  public Stack();
  public void push(int item);
  public int pop();
  public int peek();
}
于 2013-09-19T17:00:36.490 回答