Abstraction enables us to remove all unnecessary detail from our problem and then solve the problem using a model.
In software engineering and computer science, abstraction is a technique for arranging complexity of computer systems. It works by establishing a level of complexity on which a person interacts with the system, suppressing the more complex details below the current level. The programmer works with an idealized interface (usually well defined) and can add additional levels of functionality that would otherwise be too complex to handle.
To summarise abstraction is the gathering of the general characteristics we need and the filtering out of the details and characteristics that we do not need..
See also: