Method overloading and class hierarchy : overloading method « Object Oriented « SCJP






class Animal { }
class Horse extends Animal { }
class UseAnimals {
   public void doStuff(Animal a) {
      System.out.println("In the Animal version");
   }
   public void doStuff(Horse h) {
      System.out.println("In the Horse version");
   }
   public static void main (String [] args) {
      UseAnimals ua = new UseAnimals();
      Animal animalObj = new Animal();
      Horse horseObj = new Horse();
      ua.doStuff(animalObj);
      ua.doStuff(horseObj);
   }
}

Remember, the reference type determines which overloaded method is invoked!








6.5.overloading method
6.5.1.Method overloading
6.5.2.Be careful to recognize when a method is overloaded rather than overridden.
6.5.3.Invoking overloaded methods:
6.5.4.Method overloading and class hierarchy
6.5.5.Differences Between Overloaded and Overridden Methods
6.5.6.A difference in return type is insufficient to constitute an overload.
6.5.7.Different list of thrown exceptions is insufficient to constitute an overload.
6.5.8.A method is identified by its fully qualified class name, the method name, and the exact sequence of its argument types.
6.5.9.Overloading is the re-use of a method name in the one class or subclass for a different method.
6.5.10.Overloaded methods supplement each other; an overriding method replaces the method it overrides.
6.5.11.Overloaded methods can exist, in any number, in the same class.
6.5.12.The return type of an overloaded method may be chosen freely
6.5.13.Overloaded methods may have different return types.
6.5.14.Overloaded methods have the same name but different arguments.