Abstract data types are data structures defined by their behavior (semantics) rather than their implementation. They export a type and a set of operations on that type. Operations are the only way to interact with the data structure. Characteristics include exporting a type, set of operations, and operations being the only access to the type's data.