What is Data Abstraction?
Strong, well-defined division between the interface and the implementation (example: the telephone), which helps code reuse and sharing
As long as the interface remains the same, you can change the implementation (the internal representation) without changing anything else in the program