Java abstract class - with code examples

In Java, an abstract class is a reference type used for adding an abstraction layer to your program.

An abstract class can’t be used to create objects directly. Rather, you need to extend the class in a regular (concrete) java class to utilize it.

The code example below shows how you can extend an abstract class named Human to a class named Programmer:

abstract class Human {
    public void greetings() {
        System.out.println("Hello World!");
    }
}

class Programmer extends Human {}

Programmer nathan = new Programmer();
nathan.greetings(); // Hello World!

When you create an instance of the Programmer class, you can call the greetings() method defined in the Human abstract class.

Trying to create an instance of an abstract class will cause Java to throw an error as shown below:

Human nathan = new Human();
// Error: 'Human' is abstract;
// cannot be instantiated

An abstract class can have both abstract and non-abstract methods. A regular class can only have non-abstract methods.

An abstract method needs to be implemented by the subclass, or Java won’t compile as shown below:

abstract class Human {
    public void greetings() {
        System.out.println("Hello World!");
    }
    abstract void work();
}

class Programmer extends Human {}

// Error: Class 'Programmer' must either be declared abstract
// or implement abstract method 'work()' in 'Human'

To make the code above work, you need to implement the work() method in the Programmer class:

class Programmer extends Human {
    @Override
    void work() {
        System.out.println("Developing apps with Java!");
    }
}

All methods declared as abstract in the abstract class must be implemented by the class that inherits it.

In all other regards, an abstract class is the same as a regular class:

  • an abstract class can have constructors and static methods
  • an abstract class can have final methods and attributes
  • an abstract class can extend another abstract or regular class

An abstract class is similar to an interface, but there are key differences between the two that you need to understand.

Learn more here: Java Interface vs Abstract Class

Now you’ve learned how an abstract class can be created in Java. Good work! 👍

Take your skills to the next level ⚡️

I'm sending out an occasional email with the latest tutorials on programming, web development, and statistics. Drop your email in the box below and I'll send new stuff straight into your inbox!

No spam. Unsubscribe anytime.