| Lesson 6 | Overriding methods |
| Objective | Override methods. |
Overriding methods in Java
You can do some pretty interesting things with methods. One notable OOP feature is the ability to override methods, which involves replacing an inherited method with a newer version. As an example, the Predator class might define a hunt() method that specifies how a generic predator hunts:
class Predator {
...
void hunt() {
// hunt some prey
System.out.println("I'll just sit here
and wait for something to kill.");
}
}
You have already seen how the Lion class implements a hunt() method that reflects the hunting style of a lion.
In this case, the lion's hunt() method overrides the hunt() method:
class Lion extends Predator {
int energy;
int aggression;
boolean hungry;
Color color;
void hunt() {
// hunt some prey, lion-style
System.out.println("Roar!!!");
}
void eat() {
if (hungry) {
// eat
energy++;
aggression--;
}
else {
// don't eat
energy--;
aggression++;
}
}
}
When you call hunt() on a Lion object, the overridden hunt() method is the one executed. Overridden methods are always given precedence within the context of the class in which they are defined.
Overriding Methods - Exercise