- Separates what methods in the ADT do from how they are implemented.
- So many different implementations of an ADT are possible without affecting the client application that uses the ADT.
- Improvements in efficiency of a client program can be made by changing the implementation of the ADT without changing any of the client application code that uses the ADT.