The defining traits of an object-oriented language are:
Polymorphism: is a feature of OOPL that at run time depending upon the type of object the appropriate
method is called.
Inheritance: is a feature of OOPL that represents the “is a” relationship between different objects
(classes). Say in real life a manager is a employee. So in OOPL manger class is inherited from the employee class.
Encapsulation: is a feature of OOPL that is used to hide the information.