An abstract data type (ADT) refers a class that defines the behavior of a data structure without specifying its implementation. The underlying mechanism used to implement them is not visible to outside.  A stack is an ADT because it can be implemented using either an array or a linked list.