Abstract data type
The thing which makes an abstract data type abstract is that its carrier set and its operations are mathematical entities, like geometric objects or numbers; all details of implementation on a computer are ignored. This makes it easier to reason about them and to understand what they are. For instance, we can decide how div and mod must work for negative numbers in the Integer ADT without having to worry about how to make this work on real computers. Then we can deal with implementation of our decisions as a separate problem.
Once an abstract data type is implemented on a computer, we call it a data type.