You would define a constructor in an abstract class if you are in one of these situations:
- you want to perform some
initialization (to fields of the
abstract class) before the
instantiation of a subclass actually
takes place
- you have defined final fields in the
abstract class but you did not
initialize them in the declaration
itself; in this case, you MUST have
a constructor to initialize these
fields
Note that:
- you may define more than one
constructor (with different
arguments)
- you can (should?) define all your
constructors protected (making them
public is pointless anyway)
- your subclass constructor(s) can
call one constructor of the abstract
class; it may even have to call it
(if there is no no-arg constructor
in the abstract class)
In any case, don't forget that if you don't define a constructor, then the compiler will automatically generate one for you (this one is public, has no argument, and does nothing).