abstract means that the classes can not be directly instantiated to create objects. It will have at least one abstract method. Such a class can be sub-classed, and once methods have been written to override all the abstract ones in the base class, then objects of the sub-class can be created.
final means that the class cannot be sub-classed, but can only be used directly to create objects.
There is also an optional "implements" specifier in a class declaration. This is used to declare that the class provides a set of methods as defined in a separate interface. This is most often used for multi-threaded Applets, as these must extend the "Applet" class, but also have a "run" method. This is enforced using "implements Runnable".