When you face Object Oriented Programming (OOP) for the first time, you meet its three pillars: Encapsulation, Inheritance and Polymorphism. These principles are so simple and clear that experienced developers bully their young colleagues if the latter one ask to explain them. I think that they do it in vain…