Abstract Method in Java with Examples (original) (raw)
Last Updated : 20 Jan, 2026
An abstract method is a method declared without an implementation (i.e., a body). It only defines the method signature, and subclasses must provide the implementation.
- Abstract methods declared using the abstract keyword
- A class containing one or more abstract methods must be declared abstract.
- Does not have a body
- Can exist only inside an abstract class or interface
- Subclasses must override and implement it
- Abstract methods cannot use the following modifiers(final, static, private, synchronized, native, strictfp).
**Example 1: Abstract Method for Addition and Subtraction
Java `
// Abstract class abstract class ArithmeticOperation{ abstract void printInfo(); }
// Addition class class Add extends ArithmeticOperation{ void printInfo() { int a = 3, b = 4; System.out.println(a + b); } }
// Subtraction class class Sub extends ArithmeticOperation{ void printInfo() { int a = 4, b = 5; System.out.println(a - b); } }
// Driver class class GFG{ public static void main(String[] args) { ArithmeticOperation op1 = new Add(); op1.printInfo();
ArithmeticOperation op2 = new Sub();
op2.printInfo();
}}
`
Syntax
abstract returnType methodName(parameterList);
**Example:
abstract void display();
Example of Java Abstract Method
**Example 1: Abstract Class with Abstract and Concrete Methods
Java `
abstract class A{
abstract void m1();
void m2() {
System.out.println("This is a concrete method.");
}}
class B extends A { void m1() { System.out.println("Implementation of abstract method m1."); } }
public class GFG{
public static void main(String[] args) {
B b = new B();
b.m1();
b.m2();
}}
`
Output
B's implementation of m1. This is a concrete method.
**Note: Abstract classes cannot be instantiated, but their references can point to subclass objects, enabling runtime polymorphism.
**Example 2: Abstract class with an abstract method.
Java `
import java.io.*;
abstract class Geometry { // declaring abstract method abstract void rectangle_area(int height, int width); abstract void square_area(int side); abstract void circle_area(float radius); }
// extending abstract class class Easy extends Geometry { // implementing abstract method of abstract class public void rectangle_area(int height, int width) { int ar = height * width; System.out.println("Area of rectangle=" + ar); }
// implementing abstract method of abstract class
public void square_area(int side)
{
int ar = side * side;
System.out.println("Area of square=" + ar);
}
// implementing abstract method of abstract class
public void circle_area(float radius)
{
float ar = 3.14f * radius * radius;
System.out.println("Area of circle=" + ar);
}
// main function
public static void main(String[] args)
{
// creating instance of derived class
Easy obj = new Easy();
// calling abstract method
obj.rectangle_area(12, 13);
obj.square_area(12);
obj.circle_area(2.2f);
}}
`
Output
Area of rectangle=156 Area of square=144 Area of circle=15.197601
Java Abstract Method in Interface
All the methods of an interface are public abstract by default because of which we can declare abstract methods inside an interface.
Java `
interface Multiply { int twoVar(int a, int b); int threeVar(int a, int b, int c); }
class Demo implements Multiply {
public int twoVar(int a, int b) {
return a * b;
}
public int threeVar(int a, int b, int c) {
return a * b * c;
}
public static void main(String[] args) {
Multiply m = new Demo();
System.out.println(m.twoVar(10, 20));
System.out.println(m.threeVar(10, 20, 30));
}}
`
Final Method in Abstract Class
As we have mentioned that we cannot use final with abstract Method as a modifier but we can create a Final method in abstract class.
Java `
abstract class Geometry {
abstract void rectangleArea(int h, int w);
final void rectanglePerimeter(int h, int w) {
System.out.println("Perimeter = " + 2 * (h + w));
}}
class Easy extends Geometry {
void rectangleArea(int h, int w) {
System.out.println("Area = " + (h * w));
}
public static void main(String[] args) {
Easy e = new Easy();
e.rectangleArea(12, 13);
e.rectanglePerimeter(12, 13);
}}
`
Output
Area = 156 Perimeter = 50