public means that any other class has access to this class.

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".