Abstraction is a process of hiding complexity by giving a simpler interface to the user. It is a technique for managing complexity of computer systems. In programming, abstraction is achieved by creating Abstract Data Type and abstract classes.

For example, when you use a calculator, you don’t need to know how it works internally. You just need to know how to use it. The calculator provides an abstraction of the underlying complexity of its internal workings.

Examples

Java programming language has abstract classes which cannot be instatiated - they must be extended first to be the parent of a concrete class - the concrete class can then be instatiated.