Tipos abstratos são abstrações de um conjunto de estruturas, eles são compostos por dados organizados em uma estrutura e um conjunto de operações (ou operadores) que manipulam (e são os únicos que podem manipular) esses dados. Um ponto importante é que quando especificamos um TAD, ou ADT (Abstract Data Type), não é necessário especificar como as operações são implementadas, apenas quais operações estão disponíveis. Isso permite que os TADs forneçam uma visão das funcionalidades que não depende da implementação das mesmas.
Os tipos abstratos de dados permitem uma maior reusabilidade de código e facilitam a manutenção. Como a abstração cria uma “interface” de interação com o software é possível alterar e melhorar a implementação sem alterar a interface, melhorando muito a manutenção do código.