Object-oriented programming (OOP) is a programming paradigm that uses "objects" and their interactions to design applications and computer programs.
It is based on several techniques:
* Abstraction: Information about an object (its properties) can be accessed in a manner that isolates how data is stored from how it is accessed and used.
* Encapsulation: The information about an object and functions that manipulate the information (its methods) are stored together.
* Inheritance: Classes can inherit properties and methods from one or more parent classes.
* Polymorphism: A child class can redefine a method already defined in the parent class.
* Polymorhism: Polymorphism allows you to treat derived class members just like their parent class's members. More precisely, Polymorphism in object-oriented programming is the ability of objects belonging to different data types to respond to method calls of methods of the same name, each one according to an appropriate type-specific behavior.