2013-09-19 3 views
0

Может ли кто-нибудь сказать мне разницу между абстрактным типом данных и интерфейсом? Я встречался со странной проблемой. То есть я не могу отличить абстрактный тип данных и класс? Можем ли мы создать класс с ADT или ADT, это класс?Разница между классом и абстрактным типом данных

+0

Извините, а что? –

+0

Вот несколько быстрых заметок по классу и интерфейсу: http://www.cs.carleton.edu/faculty/rkirchne/cs217/tocej-proj/classes.html –

ответ

2

Аннотация Тип данных - это общий математический термин, описывающий объект, который обладает свойствами, которые Java-класс воплощает (в некоторой степени). Таким образом, вы можете рассматривать Java-класс как пример реализации концепции ADT. Несколько соответствующих цитат из Wikipedia:

Абстрактный тип данных определяется косвенно, только с помощью операций, которые могут быть выполнены на нем и математическими ограничениями на эффекты (и, возможно, стоимость) этих операций.

Абстрактные типы данных - это чисто теоретические сущности, используемые (среди прочего) для упрощения описания абстрактных алгоритмов, классификации и оценки структур данных и формального описания систем типов языков программирования. Однако ADT может быть реализован конкретными типами данных или структурами данных во многих отношениях и во многих языках программирования.

0

ADT - это абстрактный тип данных. ADT не реализован, обычно это термин, который используется для теории и анализа. Например Стек ААТ может иметь функции:

Push(X) 
Pop() 
Peek() 

Класс представляет собой набор атрибутов/свойств и функций/методов. В большинстве объектно-ориентированных языков программирования класс является основным способом выполнения абстракции и наследования.

класс для стека может выглядеть следующим образом:

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 эс. Это классы, которые не реализуют все методы. Например, мы могли бы определить абстрактный стек:

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

    public Stack(); 
    public void push(int item); 
    public int pop(); 
    public int peek(); 
} 
Смежные вопросы