类和抽象数据类型之间的区别

时间:2013-09-19 16:52:20

标签: java

任何人都可以告诉我抽象数据类型和接口之间的区别吗? 我遇到了一个奇怪的问题,就是说,我无法区分抽象数据类型和类?我们可以用ADT创建一个类,或者ADT本身就是一个类??

2 个答案:

答案 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();
}