All object-oriented programming languages share 3 characteristics.
Inheritance - meaning one class can inherit interface and even behavior from a SuperClass
Polymorphism - meaning a subclass can override the behavior of certain methods it inherits from its SuperClass
- Encapsulation - meaning a class can declare fields and methods in its interface as private, so no other class can refer to then; or protected, so only subclasses can refer to them
Object oriented programming had its birth in Norway, with the advent of the Simula language in the 1960s. As one might guess from the name, this was a language for writing simulations.
The style of programming was adopted by the SmallTalk programming language at Xerox PARC. Making SmallTalk object oriented was a pivotal decision. SmallTalk was the language that first widely used the WIMP (Windows, Icons, Mouse Pointer) paradigm for graphical user interfaces.
When Steve Jobs was dragged to see SmallTalk running over at PARC, its destiny on a new generation of personal computers - Apple the Macintosh, and later Microsoft Windows running on IBM PC clones, was sealed.