There are four Pillars of Object Oriented Programming:
- Abstraction
- Encapsulation
- Inheritance
- Polymorphism
Lets try to understand each of them in a most easiest way!
1. What is Abstraction?
Abstraction of Data or Hiding of Information is called Abstraction! or in other words, what are those things that a user is concerned about. Lets try to understand it by taking an example of an Uber app!
Lets try to understand the flow of the app:
- In figure (A): When you want to book a ride, you have to Enter a pick-up point.
- In figure (B): After done with touching on Enter a pick-up point, now you have to enter your destination place (Where to?).
- In figure (C): After done with typing the destination place now you have to select a place from the suggestion list.
- In figure (D): After done with selecting one from the suggestion list, you found your estimation of time and cost.
What interesting about each point is you do all your actions with just one touch and you don?t need to worry about how its happening like when you touched on Enter a pickup point then how the map is opened and how that pointer points to your location? Did you need to know that? What you concern about at that point was to locate my location correctly, and that?s it! and that?s exactly what Uber App doing for you (i.e. information hiding).
2. What is Encapsulation?
Binding of Data and Functions (that manipulate the data) together and keep both safe from outside interference and misuse is called Encapsulation. Lets try to understand it by taking the following example!
Lets try to understand it. Let?s say we have a class called Mobile and we have some public functions (public means the function can be called outside from the class) :
- openCamera()
- openClock()
- openCalender()
- openMaps()
- openNotes()
- openAppStore()
and so on. Above figure shows the comparison of mobile phone with a camera feature (middle one) and another mobile phone with a camera feature including a further feature of zoom in (right one). Let?s talk about openCamera() function. Initially you just have a function which opens camera for you! nothing else. Then you have got a new idea in a shape of (Zoom in) feature. To implement this idea you only have to update your OpenCamera() function. The point that needs to understand here is you don?t need to worry about anything outside of this function. You just go to the function, make some changes and BOOM!. That is what Encapsulation offers you (the mechanism of implementing class and function and making things together).
2. What is Inheritance?
Inheritance enables new objects to take on the properties of existing objects. There are different ways in which Inheritance can be done.
- Single Inheritance
- Multi-level Inheritance
- Multiple Inheritance
- Hierarchical Inheritance
Lets try to understand first type i.e. Single Inheritance by taking an example of Facebook Messenger App.
1. Single Inheritance
In this type of inheritance, a child class inherits the behavior from parent class so in above example, child class is GroupCall class which inherits the behaviors (i.e. startAudioCall() and startVideoCall()) from parent class i.e. Call. The point that needs to understand here that instead of defining those method (i.e. startAudioCall() and startVideoCall()) again in GroupCall class, those methods will be inherited from the parent class. So in this way inheritance is done!
2. Multi-level Inheritance:
In this type of inheritance, a relation of Grand Parent to Parent to Child is followed. Let?s try to understand it by taking an example:
In this type of inheritance, a child class inherits the behavior from parent class which further inherits from grand parent class. Here child is Primary Mail, parent is Gmail, and grand parent is Mail.
3. Multiple Inheritance: (not supported by Java)
In this type of inheritance, a relation of one child with two parents is followed. Let?s try to understand it by taking an example Instagram Stories:
Here we have taken an example of Instagram stories, where a class Stories inherits some behavior functions of class Camera and some behavior function of class Filters. so here a child i.e. Stories inherits from one parent (Camera) and another parent (Filters).
(Multiple Inheritance can be done in java by using Interfaces).
4. Hierarchical Inheritance:
In this type of Inheritance, A relation of multiple children of one parent
As you can see in the figure, we have taken an example of WhatsApp where a message can be send. So Message is a parent here and Text Message and Audio Message and Photo Message are children of Message!
4. What is Polymorphism?
It is the ability to redefine methods for derived classes. or we can say that object can behave in different forms is call Polymorphism. Lets try to understand it by taking an example of Google Search engine.
Lets try to understand it. When user searches for something (ALLAH HU AKBAR) in this case. so by default SearchItems () of ALLSearch class will be called. Similarly when user clicks on Images to see the Image of the search query then SearchItems() of ImageSearch class will be called. The point that needs to understand here that redefining of function is done here and secondly object of Search class can be appeared in many forms (like object of AllSearch, ImageSearch etc) implementation of the above example in Java can be done as follow:
Thats it! Happy Coding 🙂