|
|
| Overriding
|
|
Overriding is nothing but a " Argument (or) signature must be same and return type should be a covariant." .
An instance method in a subclass with the same signature (name, plus the number and the type of its parameters)
and return type as an instance method in the superclass overrides the superclass's method.
The ability of a subclass to override a method allows a class to inherit from a superclass whose behavior
is "close enough" and then to modify behavior as needed. The overriding method has the same name, number and
type of parameters, and return type as the method it overrides. An overriding method can also return a subtype
of the type returned by the overridden method. This is called a covariant return type.
|
Class Methods
If a subclass defines a class method with the same signature as a class method in the superclass, the method in the
subclass hides the one in the superclass.
The distinction between hiding and overriding has important implications. The version of the overridden method
that gets invoked is the one in the subclass. The version of the hidden method that gets invoked depends on whether
it is invoked from the superclass or the subclass. Let's look at an example that contains two classes. The first is
Animal, which contains one instance method and one class method:
public class Animal {
public static void testClassMethod() {
System.out.println("The class method in Animal.");
}
public void testInstanceMethod() {
System.out.println("The instance method in Animal.");
}
}
The second class, a subclass of Animal, is called Cat:
public class Cat extends Animal {
public static void testClassMethod() {
System.out.println("The class method in Cat.");
}
public void testInstanceMethod() {
System.out.println("The instance method in Cat.");
}
public static void main(String[] args) {
Cat myCat = new Cat();
Animal myAnimal = myCat;
Animal.testClassMethod();
myAnimal.testInstanceMethod();
}
}
The Cat class overrides the instance method in Animal and hides the class method in Animal. The main method in this class
creates an instance of Cat and calls testClassMethod() on the class and testInstanceMethod() on the instance.
The output from this program is as follows:
The class method in Animal.
The instance method in Cat.
As promised, the version of the hidden method that gets invoked is the one in the superclass, and the version of the overridden
method that gets invoked is the one in the subclass.
|
|