Java allows methods and classes to be declared
abstract. An abstract method is not actually implemented in
the class. It is merely declared there. The body of the method is
then implemented in subclasses of that class. An abstract method
must be part of an abstract class. You create abstract classes by
adding the keyword abstract after the access
specifier, e.g.
public abstract class MotorVehicle
Abstract classes cannot be instantiated. It is a compile-time error to try something like
MotorVehicle m = new MotorVehicle();
when MotorVehicle has been declared to be abstract.
MotorVehicle is actually a pretty good example of the
sort of class that might be abstract. You're unlikely to be
interested in a generic motor vehicle. Rather you'll have trucks,
motorcycles, cars, go-carts and other subclasses of
MotorVehicle, but nothing that is only a
MotorVehicle.
An abstract method provides a declaration but no implementation.
In other words, it has no method body. Abstract methods can only
exist inside abstract classes and interfaces. For example, the
MotorVehicle class might have an abstract
fuel() method:
public abstract void fuel();
Car would override/implement this method with a
fuel() method that filled the gas tank with gasoline.
EighteenWheelerTruck might override this method with a
fuel() method that filled its gas tank with diesel.
ElectricCar would override/implement this method with
a fuel() method that plugged into the wall socket.