We can further improve our Person and Email classes declared in the previous section by increasing the level of abstraction of our classes. For example, when we use the Email class, we don't need to be aware of the existence of the validateEmail method; this method could be invisible from outside the Email class. As a result, the Email class would be much simpler to understand.
When we increase the level of abstraction of an object, we can say that we are encapsulating some logic. Encapsulation is also known as information hiding. For example, the Email class allows us to use emails without having to worry about email validation because the class will deal with it for us. We can make this clearer by using access modifiers ( ...