Understanding Object Oriented Programming (OOPs) Concept in Java
Object-Oriented Programming (OOP) is a programming paradigm that revolves around the concept of objects. Java is a popular, object-oriented programming language, which means that it heavily relies on the principles of OOP. By understanding these principles, you’ll be able to write modular, reusable, and scalable code. In this blog, we’ll cover the basics of OOP in Java, its key principles, and how to create and use objects effectively.

Table of Contents
- What is Object-Oriented Programming?
- Why Use Object-Oriented Programming?
- Core Principles of OOP
- Classes and Objects
- Methods and Encapsulation
- Inheritance
- Polymorphism
- Abstraction
- Conclusion
1. What is Object-Oriented Programming?
Object-Oriented Programming is a programming model organized around objects rather than actions. An object is a self-contained component with attributes (data) and behaviors (methods or functions). OOP allows programmers to create modules that do not need to be modified when a new type of object is added, making it easier to maintain and scale complex software systems.
2. Why Use Object-Oriented Programming?
Object-Oriented Programming offers numerous advantages:
- Modularity: OOP breaks down a program into smaller, manageable pieces, or modules.
- Reusability: Once a class is created, it can be reused in different parts of the application.
- Scalability: You can easily extend existing code by adding new classes or modifying existing ones.
- Easy Maintenance: OOP-based code is generally easier to troubleshoot and modify since related tasks are encapsulated within objects.
Java, as an OOP language, enables developers to create flexible, dynamic applications by leveraging these benefits.


3. Core Principles of OOP
The four core principles of Object-Oriented Programming are:
- Encapsulation: Bundling data and methods that operate on that data within a single unit, or class.
- Inheritance: The ability to create a new class from an existing class, inheriting attributes and methods.
- Polymorphism: The ability for different classes to be treated as instances of the same class through interfaces or inheritance.
- Abstraction: Simplifying complex systems by modeling classes appropriate to the problem, while hiding unnecessary details.
These principles form the foundation of OOP and enable efficient code management and organization.
4. Classes and Objects
In Java, a class is a blueprint for creating objects. It defines the properties (fields or attributes) and behaviors (methods) that an object of that class can have. An object is an instance of a class, containing real values instead of variables.
Declaring a Class
Here’s an example of a simple class in Java:
public class Car {
// Fields (attributes)
String color;
String model;
int year;
// Constructor
public Car(String color, String model, int year) {
this.color = color;
this.model = model;
this.year = year;
}
// Method
public void start() {
System.out.println(model + " is starting.");
}
}
In this example, we have a class called Car
with three attributes: color
, model
, and year
. The class also has a method start()
that defines a behavior.
Creating an Object
You can create an object of the class using the new
keyword, which invokes the constructor to initialize the object:
public class Main {
public static void main(String[] args) {
Car myCar = new Car("Red", "Toyota", 2020);
myCar.start();
}
}
Output:
Toyota is starting.
Here, myCar
is an instance of the Car
class. It holds specific values for color, model, and year, and can use the start()
method defined in the Car
class.
5. Methods and Encapsulation
Encapsulation is the principle of keeping fields (attributes) private within a class while providing public methods to access and modify those fields. This protects the data and ensures that it can only be modified in controlled ways.
Example of Encapsulation
public class Person {
private String name; // private field
// Public getter method
public String getName() {
return name;
}
// Public setter method
public void setName(String name) {
this.name = name;
}
}
In this example, the name
field is private, which means it cannot be accessed directly from outside the class. Instead, the getName()
and setName()
methods provide controlled access to this field. This practice promotes data security and flexibility.
6. Inheritance
Inheritance is a feature that allows a new class to inherit fields and methods from an existing class. The new class, known as the subclass or derived class, extends the existing class, known as the superclass or base class. This reduces redundancy and allows you to reuse code.
Example of Inheritance
// Superclass
public class Animal {
public void eat() {
System.out.println("The animal is eating.");
}
}
// Subclass
public class Dog extends Animal {
public void bark() {
System.out.println("The dog is barking.");
}
}
public class Main {
public static void main(String[] args) {
Dog myDog = new Dog();
myDog.eat();
myDog.bark();
}
}
Output:
The animal is eating.
The dog is barking.
In this example, Dog
inherits the eat()
method from Animal
and adds a new method, bark()
. The myDog
object can now use both eat()
and bark()
.
7. Polymorphism
Polymorphism allows one interface to be used for different types of actions. It means “many forms,” and it enables objects of different classes to be treated as objects of a common superclass. In Java, polymorphism is commonly achieved through method overriding and interfaces.
Method Overriding Example
public class Animal {
public void sound() {
System.out.println("Animal makes a sound");
}
}
public class Cat extends Animal {
@Override
public void sound() {
System.out.println("Meow");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Cat();
myAnimal.sound(); // Outputs "Meow"
}
}
Here, Cat
overrides the sound()
method of Animal
. When myAnimal.sound()
is called, it uses the overridden method in the Cat
class.
8. Abstraction
Abstraction is the process of hiding the implementation details and showing only the necessary features of an object. In Java, you can achieve abstraction by using abstract classes and interfaces.
Example of Abstraction Using an Interface
interface Flyable {
void fly();
}
public class Bird implements Flyable {
public void fly() {
System.out.println("The bird is flying.");
}
}
In this example, Flyable
is an interface that abstracts the concept of flying. Any class that implements Flyable
must provide an implementation for the fly()
method, as seen in the Bird
class.
9. Conclusion
Understanding Object-Oriented Programming in Java is fundamental for writing efficient and modular code. By learning about classes, objects, and the core principles of encapsulation, inheritance, polymorphism, and abstraction, you can build scalable and reusable applications. Java’s OOP features allow you to manage complexity, improve code readability, and create flexible designs.
Whether you’re building a small application or a large-scale system, mastering OOP concepts will provide a strong foundation for your programming journey. Experiment with these principles in your projects to see firsthand how they can simplify code organization and enhance functionality.
Other Java Topics
- Introduction to Java Programming Language
- Setting Up Your First Java Development Environment
- Java Syntax
- Java Hello World Program
- Java Data Types: Primitives and Reference
- Java Variables
- Operators in Java
- Java Conditions
- Loops in Java
- Java Arrays
- Object Oriented Programming (OOPs) Concept in Java
- Java Classes and Objects
- Inheritance in Java
- Java Polymorphism
- Encapsulation in Java
- Abstraction in Java
- Java Constructors
- Interfaces in Java
- Abstract Class in Java
- Inner Classes in Java
- Collections in Java
- Java ArrayList
- LinkedList in Java
- HashMap in Java
- Java Sets
- TreeMap in Java
- Comparable vs Comparator in Java