Data Abstraction
Classes normally hide their implementation details from code that uses them.
Interface is only allowed through accessor
This requires clients to use a set methodology to use the classes
So, we are free to change the implementation “under the hood” as long as we do not change the interface