Encapsulation allows you to make internal changes to a class without affecting any code that calls the class. This reduces coupling, or how much any given class relies on the implementation of another class.
For example, let's change the implementation of the Angle class from the previous example:
...