Abstraction
Abstraction is one of the feature of object oriented programming. Abstraction refers to the hiding the details. In order to understand the abstraction let’s take an example of car. People do not think of a car as a set of tens of thousands of individual parts they think that the car is a well defined object with its own unique behavior we know that what happens when car driver presses break and the car stops or by applying gear causes the increase of speed, the driver is very familiar with all these functionality that what will happen by doing this but the driver does not know that how actually this is being done. How internally these functionality works. This hiding the details refers to Abstraction.
We can manage the complexity through abstraction. From outside the car is single object but from the inside it consist of several subsystems like steering, break, sound system, heating, and so on. This is how abstraction causes the reduce the complexity of object from the people.
In java programming the abstraction is obtained by interfaces and abstract class. Interface is similar to class it consist of fields/characteristics or behavior. In interface the fields are by default public static and final and the behavior is public and abstract. The interface tells that what behavior is not how the behavior will be because it depends upon the class that implements it. And the second way to obtain the abstraction is by using abstract classes. Abstract classes are the type of classes whose object can not be created and this type of class can contain the abstract methods.
