Lesson

Abstract Class

Opps/Java

Abstract Class

An abstract class in Java is a class that is declared using the abstract keyword and may contain abstract methods (methods without a body).

Abstract classes are used when:

  • You want to provide a common base for multiple classes

  • You want to enforce certain methods in child classes

What is an Abstract Method?

An abstract method is a method that does not have a body.

java
abstract void m1();

If a method has no body, it must be declared as abstract.

Also, the class containing it must be declared as abstract.


Key Features of Abstract Class

  • Can contain:

    • Variables

    • Methods (abstract + normal)

    • Constructors

    • Static and instance blocks

  • Cannot be instantiated (no object creation)

java
abstract class A {
    abstract void m1();

    void m2() {
        System.out.println("m2 method");
    }
}

class B extends A {
    void m1() {
        System.out.println("m1 implemented in B");
    }
}

class Soft {
    public static void main(String[] args) {
        B obj = new B();
        obj.m1();
        obj.m2();
    }
}

Why We Cannot Create Object of Abstract Class?

Because an abstract class is incomplete:

  • It may contain abstract methods

  • Those methods do not have implementation

So Java does not allow creating its object.

java
abstract class Details {
    int id;
    String name;
    String email;
}

class Student extends Details {}
class Teacher extends Details {}
class Admin extends Details {}

class Soft {
    public static void main(String[] args) {
        Student s = new Student();
        s.id = 101;
        s.name = "Vivek";
        s.email = "vivek@mail.com";
    }
}

Explanation

  • Details is common for all

  • We do not create object of Details directly

  • Instead, we create objects of specific classes like Student

This improves clarity and design.


Rules of Abstract Class

  1. If a class contains an abstract method → class must be abstract

  2. If a class extends an abstract class → it must implement all abstract methods

  3. If not implemented → child class must also be abstract

plaintext
abstract class Animal {
    abstract void eating();
    abstract void sleeping();
}

abstract class Dog extends Animal {
    public void eating() {
        System.out.println("Dog is eating");
    }
}

class MyDog extends Dog {
    public void sleeping() {
        System.out.println("Dog is sleeping");
    }
}

Factory-Based Example

plaintext
abstract class Animal {
    abstract void eating();
    abstract void sleeping();
}

class Dog extends Animal {
    void eating() {
        System.out.println("Dog eating");
    }

    void sleeping() {
        System.out.println("Dog sleeping");
    }
}

class Cat extends Animal {
    void eating() {
        System.out.println("Cat eating");
    }

    void sleeping() {
        System.out.println("Cat sleeping");
    }
}

class AnimalFactory {
    static Animal getAnimal(int type) {
        if (type == 1) return new Dog();
        else return new Cat();
    }
}

class Soft {
    public static void main(String[] args) {
        Animal a = AnimalFactory.getAnimal(1);
        a.eating();
    }
}

Important Points

  • Abstract class = partially implemented class

  • Cannot create object directly

  • Used for common structure

  • Supports code reuse

  • Helps in achieving abstraction


Short Interview Answer

Abstract class is a class that cannot be instantiated and may contain abstract methods. It is used to provide a common structure and partial implementation for subclasses.