Abstract data types (ADTs) define a data type in terms of its possible values and operations, independent of implementation details. An ADT consists of a logical form defining the data items and operations, and a physical form comprising the data structures and algorithms that implement it. Simple data types like integers and characters are ADTs with basic storage structures like memory locations and operations implemented by hardware/software. More complex ADTs require user-defined data structures to organize data in memory or files along with subroutines implementing each operation.