Abstract Data Type (ADT) adalah sebuah konsep dalam pemrograman yang menggambarkan tipe data yang terdefinisi oleh operasi-operasi yang dapat dilakukan pada tipe data tersebut, tanpa mengungkapkan implementasi internalnya. Dalam ADT, fokus diberikan pada apa yang dapat dilakukan dengan tipe data tersebut, bukan pada bagaimana implementasinya dilakukan.
ADT dapat dianggap sebagai kontrak antara pengguna (programmer) dan implementasi yang menyediakan operasi-operasi tertentu pada suatu tipe data. Pengguna hanya perlu tahu bagaimana menggunakan operasi-operasi tersebut tanpa harus tahu bagaimana implementasinya dilakukan.
Contoh ADT yang umum adalah Stack (tumpukan). Stack adalah koleksi elemen-elemen yang menerapkan operasi "push" (menambahkan elemen ke dalam stack) dan "pop" (menghapus elemen teratas dari stack). Berikut ini adalah contoh source code sederhana untuk ADT Stack :