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.
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)
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.
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
Detailsis common for allWe do not create object of
DetailsdirectlyInstead, we create objects of specific classes like
Student
This improves clarity and design.
Rules of Abstract Class
If a class contains an abstract method → class must be abstract
If a class extends an abstract class → it must implement all abstract methods
If not implemented → child class must also be abstract
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
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.