Abstraction: To represent the essential feature without representing the background details is abstraction. It lets you focus on what the object does instead of how it does it.
Abstraction provides you a generalized view of your classes or objects by providing relevant information. Mostly we make abstract class to generalized a concept.
Ex: generalized file upload, where you can upload any kind of file like word pdf or any other.

Encapsulation: Prevents access to implementation details i.e. Wrapping up a data member and a method together into a single unit. example Mobile Phones.

Inheritance: Inheritance is a process of object reusability. When a class includes a property of another class it is Inheritance. Example parent-child relation.

Polymorphism: It mean one form, many uses. Using Many forms of a single object.
Types:
**

Compile-time: compiler identifies which polymorphism form it has to take and execute at compile time. (Overloading).
** Run-time: compiler identifies which polymorphism form it has to take and execute at runtime but not at compile time. (Overriding).