Except for the 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 methodsmethods that are declared but not implemented. Subclasses then provide the implementations for the abstract methods.