Abstraction means to ignore highly technical and specific details in favour of the main goal or purpose of a project. It refers to simplifying complex, real world problems into simple data types, with defined operations.

When we abstract things, we don’t care how they work, just what the end results should be.

Abstraction is a key pillar of OOP.

Abstraction can be achieved in different ways, depending on the type of programming language (whether it is object oriented or not):

FeatureDescriptionExclusive to OO Languages
Abstract Data TypeAn ADT can be used to simplify a complex object into a set of simple properties. For example, storing a shop’s current queuing customers can be done with the abstract queue.No, can be found in procedural languages as well
FunctionBoth procedural and object oriented programming languages support the use of functions to repeat a set of instructions. This is very useful when the problem requires numerous actions happening often.OO Languages use methods, which really is a type of function
Abstract Methods & Abstract ClassObject oriented languages have the ability to create abstract Methods and Classes, which have no implementation themselves, but have a some given inputs and outputs.Yes
InterfaceThese are the highest level of abstraction in OO languages, as they define both abstract methods and can be parents to abstract classes.Yes

https://www.tonymarston.co.uk/php-mysql/abstraction.txt