Exploring the Four Pillars of OOP in Java by Ina Grigoryan
Published: 2023-11-29 15:54:27

Hello fellow coders! I hope this post finds you well.

In this blog post, I find it important to discuss the concept Object-Oriented Programming of Java and furthermore, dive into the four pillars of OOP.

Additionally, this blog post is the continuation of my short YouTube video where I give brief information about Java fundaments, types and their differences. So, if necessary, also check my YouTube video. 
https://www.youtube.com/watch?v=FvV_f6nq2QM

Object-oriented programming (OOP) centers on the idea of "objects." The goal? To create more logical and intuitive objects and interactions found in the actual world.

Among the titans of OOP are Python, Java, and C++. They emphasize the organization of code around classes and objects, encouraging the use of polymorphism, inheritance, and encapsulation. This paradigm is perfect for large-scale applications since it is very good at simulating complicated systems.

OOP is very similar to writing a book where objects are the characters and have specific roles to play. Each character/object has a unique backstory, but they all work together to advance the main plot. Functional languages, on the other hand, are more suited to resolving a challenging arithmetic issue. These functions are designed to analyze, transform, or process numerical data. Instead of using traditional loops or mutable variables, functional programming relies heavily on the use of functions to perform operations on data.

**Now, Let's Get to the Fun Part: Four Pillars of OOP!**
The famous Four Pillars of OOP are inheritance, encapsulation, abstraction and polymorphism. Each of these pillars will be discussed below. Feel free to leave comments with questions or corrections <3.

**Inheritance**
By building on preexisting code, inheritance enables you to establish a hierarchy of classes. Think of it like a family tree, where each subclass inherits the traits of the superclass. This creates a logical, well-organized framework and encourages the reuse of code. It's actually like passing on cool features to your code family through inheritance. Imagine acquiring your grandfather's old record player, only better. You start with a simple class (such as "Grandpa's Record Player") and inherit those amazing characteristics to construct subclasses (such as "Bluetooth-Enabled Hipster Version"). Simple!

**Encapsulation**
The skill of encapsulating data and the methods that work with it into a single unit, a class, is known as encapsulation. Like having a vault for the secrets of your code. You may protect data and stop unauthorized access by limiting access using access modifiers. It's like placing your secret sauce recipe in a safe, wrapping your data and methods in a class. Access modifiers choose who gets VIP access and who is left waiting at the door, acting as your security personnel. Sometimes inheritance is confused with abstraction, but once we go through both of them, everything will be clear.

**Abstraction**
Making abstract models of complicated systems is the process of abstraction. Consider it as reducing your code's essence while hiding unnecessary information. It enables programmers to concentrate on the important details, improving the readability and flexibility of the code. Making code art is similar to abstraction. You bury the untidy details and concentrate on the main idea. It's similar to pulling off a charming magic trick on a friend but keeping all the details to yourself. However, this is just hiding the code, not encapsulating it. In other words, one can see the abstracted code, if he wishes, although encapsulated code is private and non-accessable.

**Polymorphism**
Code may adjust to various circumstances thanks to polymorphism. Common interaction with diverse classes is made possible by method overriding, whereas method overloading offers flexibility by allowing several methods with the same name but distinct parameters. Based on the situation, it can be likened to code wearing multiple hats. In other words, the property of code that can multitask is called polymorphism. You can use the same method for different objects in diverse ways, by assigning it different properties. Cool, right?


As we get to the end of our adventure, keep in mind that writing code is only one aspect of learning OOP and its Four Pillars in Java; another is creating a work of art of elegance, flexibility, and reliability with the help of 4 pillars. 

This blog post was written and published by me (Ina Grigoryan). Happy coding!