Generally speaking, all
servlets have functions and when you inherit from this class you are creating a servlet that has a particular function.
This class is abstract in order to discourage developers from ever instantiating it since this would be tantamount to having a servlet that does nothing. Could it have been marked without the abstract so that it could be invoked? Sure, but it wouldn't do anything. Abstract is a nice way of forcing developers to do things the right (or intended way)... or a scary way of finding lengths people will go to avoid doing it the right way...