Abstraction is one of the main concepts in Object Oriented Programming (OOP). This is the process of hiding the implementation details for the outsiders while showing only essential details. In another words, Abstraction is a technique to arrange the complexity of a program.
There are two basic type of abstraction:
Control abstraction
This is done using sub-routines and control flow. We can call another function/method/routine (sub-routine) from a function/method to do a specific task, where that sub-routine is abstract.
Data abstraction
This is done through various data structures and their implementations. We can create our own data structures to store our data, while keeping the implementation abstract.
In OOP we use mix of control and function abstraction.