Yandex

Java Advanced ConceptsJava Advanced Concepts3

Java ReferenceJava Reference1

Java abstract Keyword
Usage and Examples



abstract Keyword in Java

The abstract keyword in Java is used to define abstract classes and abstract methods. These are essential components of Java's powerful object-oriented programming capabilities. If you're building a system where certain classes shouldn't be instantiated directly and must be extended, this keyword is your go-to tool.

What is an Abstract Class?

An abstract class is a class that cannot be instantiated. It's designed to be a blueprint for other classes. You can think of it as an incomplete class that other classes are expected to complete by extending it.

Syntax

abstract class Animal {
    // Fields and methods
}

Example

abstract class Animal {
    abstract void makeSound(); // abstract method

    void breathe() {
        System.out.println("Breathing...");
    }
}

class Dog extends Animal {
    void makeSound() {
        System.out.println("Woof Woof!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.makeSound();
        dog.breathe();
    }
}
Woof Woof!
Breathing...

Key Takeaways from the Example

Why Use Abstract Classes?

Abstract classes help you define a contract for subclasses. They are useful when you want multiple classes to share a common method signature but implement it differently.

What is an Abstract Method?

An abstract method is a method declared without a body, using the abstract keyword. It must be implemented by all non-abstract subclasses.

Abstract Method Syntax

abstract returnType methodName();

Abstract Class with Constructor

Abstract classes can have constructors, and they are invoked when a subclass is instantiated.

abstract class Shape {
    Shape() {
        System.out.println("Shape constructor called");
    }

    abstract void draw();
}

class Circle extends Shape {
    Circle() {
        System.out.println("Circle constructor called");
    }

    void draw() {
        System.out.println("Drawing Circle");
    }
}

public class Demo {
    public static void main(String[] args) {
        Shape s = new Circle();
        s.draw();
    }
}
Shape constructor called
Circle constructor called
Drawing Circle

Rules of Using abstract

Abstract Class vs Interface

Abstract Class Interface
Can have method bodies All methods are abstract by default (until Java 8+)
Can have constructors Cannot have constructors
Supports access modifiers Members are public by default
Can extend only one abstract class Can implement multiple interfaces

Real-Life Example

Imagine you're building a payment system with different modes: credit card, UPI, PayPal. You could use an abstract class Payment with an abstract method process(). Each mode would implement this method in its own way.

abstract class Payment {
    abstract void process();
}

class CreditCardPayment extends Payment {
    void process() {
        System.out.println("Processing credit card payment");
    }
}

class UpiPayment extends Payment {
    void process() {
        System.out.println("Processing UPI payment");
    }
}


Welcome to ProgramGuru

Sign up to start your journey with us

Support ProgramGuru.org

You can support this website with a contribution of your choice.

When making a contribution, mention your name, and programguru.org in the message. Your name shall be displayed in the sponsors list.

PayPal

UPI

PhonePe QR

MALLIKARJUNA M