Which description best defines encapsulation?
Bundling data with the methods that operate on it and restricting direct access to the internal state
Deriving new classes from existing ones
Giving one interface multiple implementations
Hiding implementation complexity by exposing only essential features