Object
class, a class has
exactly one direct superclass. A class inherits fields and methods from all its
superclasses, whether
direct or indirect. A subclass can override methods that
it inherits, or it can hide fields or methods that it inherits.
(Note that hiding fields is generally bad
programming practice.)
The table in Overriding and Hiding Methods section shows the effect of declaring a method with the same signature as a method in the superclass.
The Object
class is the top of the class hierarchy.
All classes are descendants from this class and inherit methods
from it. Useful methods inherited from Object
include toString()
, equals()
,
clone()
, and getClass()
.
You can prevent a class from being subclassed by using the
final
keyword in the class's declaration. Similarly,
you can prevent a method from being overridden by subclasses by
declaring it as a final method.
An abstract class can only be subclassed; it cannot be instantiated. An abstract class can contain abstract methods—methods that are declared but not implemented. Subclasses then provide the implementations for the abstract methods.