Polymorphism : it means that an entity can be used under many forms. For example, if we have a method called method(), the polymorphism allows to use it with another implementation like : method(p1) or , method(p1, p2) or any other form using the same name method. This can be helpful for an developer, because he shouldn’t know the types or the number of the parameters.

Encapsulation : it is a mechanism to restrict access to object’s components by other objects. It is useful to change object’s data structure without changing its interface, so it isn’t necessary to change the classes using this interface. this mechanism imposes a loose coupling.

Inheritance : it allows the reuse of the object’s characteristics by another one and the object’s adaptability by using the polymorphism’s concept. Inheritance allows to child class to extends the properties of the mother class.