AbstractionThe way of simplifying complex reality by modelling classes appropriate to the problem
Definitions:
In software engineering, abstraction is the process of removing unnecessary details and showcasing only the necessary elements.
EncapsulationBundling of data with the methods that operate on that data
Definitions:
In object-oriented programming, encapsulation refers to the bundling of data, along with the methods that operate on that data.
InheritanceA mechanism of basing an object or class upon another object or class
Definitions:
Inheritance, in object-oriented programming, is a mechanism of creating a new class from an existing class.
PolymorphismThe provision of a single interface to entities of different types
Definitions:
In programming, polymorphism is the practice of designing objects to share behaviors and able to perform functionalities in multiple ways.