Loading content...
Loading content...
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
An abstract method is a method that does not have a body.
javaCopy
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.
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();
}
}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";
}
}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.
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
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");
}
}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();
}
}Abstract class = partially implemented class
Cannot create object directly
Used for common structure
Supports code reuse
Helps in achieving abstraction
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.