Overriding and overloading methods
Java allows us to define a method with the same name many times with different arguments. This feature is known as method overloading. When we created the previous abstract classes, we overloaded the constructor.
For example, we can take advantage of method overloading to define multiple versions of the neigh
and nicker
method that we have to define in the VirtualHorse
abstract class. However, it is very important to avoid code duplication when we overload methods.
Sometimes, we define a method in a class, and we know that a subclass might need to provide a different version of the method. A clear example is the talk
method we defined in the VirtualDomesticMammal
class. When a subclass provides a different implementation of a method defined in a superclass with the same name, arguments, and return type, we say that we are
overriding a method. When we override a method, the implementation in the subclass overwrites the code provided in the superclass.
We will...