DEV Community

Cover image for Understanding Core OOP Concepts with Java: A Beginner’s Guide
Dimagi Sihilel
Dimagi Sihilel

Posted on

4 1 1 1 1

Understanding Core OOP Concepts with Java: A Beginner’s Guide

Hey, student devs! I’m a software engineering student, and when I started Java, OOP (Object-Oriented Programming) seemed tricky. But it’s just a clever way to organize code — like sorting your school stuff into neat folders. Let’s go through the main ideas: Classes and Objects, Encapsulation, Inheritance, Polymorphism, and Abstraction. I’ll use simple Java examples to make it all click. Ready? Let’s dive in!

Classes and Objects: The Basics of OOP

A class is like a plan for something, and an object is the real thing you make from that plan. Imagine a class as a recipe for cookies — it tells you what’s needed, but the cookies you bake are the objects.

class Laptop {
    String brand;
    int price;

    void turnOn() {
        System.out.println(brand + " laptop is starting up!");
    }
}

public class Main {
    public static void main(String[] args) {
        Laptop myLaptop = new Laptop(); // Object
        myLaptop.brand = "Dell";
        myLaptop.price = 500;
        myLaptop.turnOn(); // Output: Dell laptop is starting up!
    }
}
Enter fullscreen mode Exit fullscreen mode

Here, Laptop is the class (recipe), and myLaptop is the object (cookie). Classes describe properties (like brand) and actions (like turnOn).

1. Encapsulation: Keep It Safe

Encapsulation is like hiding your diary and only letting people read it if you say so. In Java, we use private to hide data and public methods to control access.

class BankAccount {
    private int balance = 100; // Hidden

    public int getBalance() { // Let them see it
        return balance;
    }

    public void deposit(int amount) { // Let them add safely
        if (amount > 0) {
            balance += amount;
        }
    }
}

public class Main {
    public static void main(String[] args) {
        BankAccount account = new BankAccount();
        account.deposit(50);
        System.out.println("Balance: " + account.getBalance()); // Output: Balance: 150
    }
}
Enter fullscreen mode Exit fullscreen mode

balance is private — nobody can touch it directly. They use deposit or getBalance, keeping things safe and tidy.

2. Inheritance: Share the Good Stuff

Inheritance lets one class take stuff from another, like a kid inheriting traits from parents. In Java, we use extends for this.

class Vehicle {
    void start() {
        System.out.println("Engine on!");
    }
}

class Bike extends Vehicle {
    void pedal() {
        System.out.println("Pedaling fast!");
    }
}

public class Main {
    public static void main(String[] args) {
        Bike myBike = new Bike();
        myBike.start(); // From Vehicle
        myBike.pedal(); // From Bike
    }
}
Enter fullscreen mode Exit fullscreen mode

Bike inherits start() from Vehicle — it gets the basics for free and adds its own pedal(). Saves time!

3. Polymorphism: Same Name, Different Actions

Polymorphism means “many shapes” — one thing acting differently depending on the situation. In Java, we often use method overriding.

class Animal {
    void sound() {
        System.out.println("Some noise...");
    }
}

class Dog extends Animal {
    void sound() { // Same name, new action
        System.out.println("Woof!");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Looks like Animal, acts like Dog
        myDog.sound(); // Output: Woof!
    }
}
Enter fullscreen mode Exit fullscreen mode

Even though myDog is declared as Animal, it uses Dog’s sound(). That’s polymorphism — same method, different results!

4. Abstraction: Hide the Messy Stuff

Abstraction is like using a TV remote — you press buttons, but don’t care how it works inside. In Java, we use abstract classes or interfaces to show only what’s needed.

abstract class Shape {
    abstract void draw(); // No details here
}

class Circle extends Shape {
    void draw() { // Real action
        System.out.println("Drawing a circle!");
    }
}

public class Main {
    public static void main(String[] args) {
        Shape myShape = new Circle();
        myShape.draw(); // Output: Drawing a circle!
    }
}
Enter fullscreen mode Exit fullscreen mode

Shape doesn’t explain how to draw — Circle does that. Abstraction keeps the messy details hidden.

Why It’s Cool

OOP makes coding easier as projects grow. Instead of one big mess, I split it into classes — like organizing my notes into folders.

It’s reusable (use a class in many projects) and easier to fix (change one class, not everything).

How to Start

Practice: Make simple classes — a Phone, a Book, anything!

Learn: Check https://www.w3schools.com/java/ for basics, or https://www.javatpoint.com/ for examples.

Build: Try a small app, like a pet tracker with these concepts.

My Take

OOP in Java felt hard at first, but now it’s like playing with toys — everything has its place. As a student, I love how it keeps my code neat and saves me time. Try these examples, play around, and you’ll get why OOP’s so awesome!

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Engage with a wealth of insights in this thoughtful article, valued within the supportive DEV Community. Coders of every background are welcome to join in and add to our collective wisdom.

A sincere "thank you" often brightens someone’s day. Share your gratitude in the comments below!

On DEV, the act of sharing knowledge eases our journey and fortifies our community ties. Found value in this? A quick thank you to the author can make a significant impact.

Okay