Summary: in this tutorial, you will learn about the Java abstract class and how to use it as a template for other classes.
Introduction to Java abstract class
In Java, an abstract class is a class that cannot be instantiated directly. An abstract class serves as a base class for other classes. In other words, an abstract class defines common behaviors that multiple related classes can inherit.
To define an abstract class, you use the abstract
keyword:
abstract class AbstractClassName {
// ...
}
Code language: Java (java)
An abstract method is a method declared without implementation like this:
abstract class AbstractClassName {
// ...
abstract dataType abstractMethod(parameters);
}
Code language: Java (java)
An abstract class may or may not include abstract methods. But if a class includes an abstract method, it must be an abstract class.
Typically, an abstract class includes one or more abstract methods. In this case, all subclasses of the abstract class need to provide implementations for all abstract methods of the abstract class. If the subclasses do not, they must be marked as abstract classes.
To create a subclass that extends an abstract class, you use the extends
keyword:
class MyConcreteClass extends AbstractClassName {
dataType abstractMethod(parameters) {
// ...
}
}
Code language: Java (java)
When a subclass extends an abstract class and provides implementations for all the abstract methods, the subclass is called a concrete subclass.
Java abstract class example
Let’s take an example of using a Java abstract class.
First, define the Shape
abstract class:
abstract class Shape {
abstract double area();
abstract double perimeter();
}
Code language: Java (java)
The Shape
class has two abstract methods:
area()
– return the area of the shape.perimeter()
– return the perimeter of the shape.
Second, define the Square
class that extends the Shape
abstract class:
public class Square extends Shape {
private final double length;
public Square(double length) {
this.length = length;
}
@Override
double area() {
return this.length * this.length;
}
@Override
double perimeter() {
return 4 * this.length;
}
}
Code language: Java (java)
The Square
class is a concrete subclass of the Shape
class because it is a subclass of the Shape
class and provides concrete implementations for both abstract methods area()
and perimeter()
.
Third, define the Circle
class that inherits from the Shape
class:
public class Circle extends Shape {
private final double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
double area() {
return Math.PI * Math.pow(radius, 2);
}
@Override
double perimeter() {
return 2 * Math.PI * radius;
}
}
Code language: Java (java)
Like the Square
class, the Circle
class is also a concrete subclass of the Shape
class. It implements the area()
and perimeter()
abstract methods.
Finally, define an array of shapes that contains the instances of the Circle
and Square
class, iterate the shapes
in the array, and calculate the total area and perimeter of all the shapes:
public class App {
public static void main(String[] args) {
Shape[] shapes = {
new Circle(10),
new Square(20),
};
double totalArea = 0;
double totalPerimeter = 0;
for (var shape : shapes) {
totalArea += shape.area();
totalPerimeter += shape.perimeter();
}
System.out.printf("Total area: %.2f\n", totalArea);
System.out.printf("Total perimeter %.2f\n", totalPerimeter);
}
}
Code language: Java (java)
Output:
Total area: 714.16
Total perimeter 142.83
Code language: Java (java)
Summary
- An abstract class cannot be instantiated and is used as a template for other classes.
- An abstract method is a method without an implementation.
- An abstract class may or may not include an abstract method. If a class has at least one abstract method, it must be an abstract class.
- Use the abstract keyword to define abstract classes and abstract methods.
- Subclasses that extend an abstract class must provide concrete implementations for all abstract methods of the abstract class, or they must be marked as abstract classes.
- Abstract classes ensure subclasses implement required behaviors.