A data type consists of two parts, a set of data with identical properties and the operations that can be performed on the data. Thus we see that integer type consists of values (whole numbers) and operations (add, subtract, multiply, divide etc).
Abstract Data Types (ADT) uses the idea of abstraction and hiding information on implementation details. Applications that use the data type are oblivious to the implementation: they only make use of operations defined or specified abstractly. In this way, the application, which might be millions of lines of code, is completely isolated from the implementation. With an ADT, applications are not concerned with how the task is done but rather with what it can do. With the use of ADT, our programs divide into two pieces or layers.