Métodos sobrecargados en Java

From ChuWiki
Jump to navigation Jump to search

Se llaman métodos sobrecargados a métodos con el mismo nombre en una clase. Para saber qué método se ejecuta cuando se le llama, se decide por el tipo de los parámetros que se le pasan. Haremos una clase de ejemplo con un método sobrecargado. El método se llamará imprimirLista(). Habrá tres métodos imprimirLista() y la forma de distinguirlos es por el tipo del parámetro que se le pasa: Integer[], Double[] o Character[].

La clase MetodosSobrecargados contiene tres métodos sobrecargados llamados imprimirLista. Estos métodos imprimen en representación de String los elementos de un array de Integer, una array de double o un array de Character. El tipo del parámetro es el que decidirá a qué método se llama.

// Ejemplo de metodos sobrecargados
// Uso de metodos sobrecargados para imprimer listas de diferentes tipos
 
public class MetodosSobrecargados
{
   // metodo imprimirLista que imprime una lista de Integer
   public static void imprimirLista( Integer[] lista )
   {
      for ( Integer elemento: lista )
         System.out.printf( "%s ", elemento);
 
      System.out.println();
   } // fin metodo imprimirLista
 
   // metodo imprimirLista que imprime una lista de Double
   public static void imprimirLista( Double[] lista )
   {
      for ( Double elemento: lista )
         System.out.printf( "%s ", elemento );
 
      System.out.println();
   } // fin metodo imprimirLista
 
   // metodo imprimirLista que imprime unalista de Character 
   public static void imprimirLista( Character[] lista)
   {
      for ( Character elemento : lista )
         System.out.printf( "%s ", elemento);
 
      System.out.println();
   } // fin metodo imprimirLista
 
   public static void main( String args[] ) 
   {
      // creacion de listas de Integer, Double y Character
      Integer[] lista_integer = { 1, 2, 3, 4, 5, 6 };
      Double[] lista_double = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7 };
      Character[] lista_caracter = { 'H', 'O', 'L', 'A' };
 
      // Llamada a imprimirLista() de Integer[]
      System.out.println( "la lista de Integer  contiene:" );
      imprimirLista( lista_integer );

      // Llamada a imprimirLista() de Double[]
      System.out.println( "\nla lista de doble contiene:" );
      imprimirLista( lista_doble); // pass a Double lista de

      // Llamada a imprimirLista() de Character[]
      System.out.println( "\nla lista de Caracter contiene:" );
      imprimirLista( characterlista de ); // pass a Character lista de
   } // fin del metodo main
} // fin de la clase MetodosSobrecargados

La salida del ejemplo anterior seria algo como esto:

   Array integerArray contains:
   1 2 3 4 5 6
   Array doubleArray contains:
   1.1 2.2 3.3 4.4 5.5 6.6 7.7
   Array characterArray contains:
   H E L L O

Es importante advertir que el tipo de valor de retorno del método NO sirve para sobrecargar un método. Es decir, no podemos hacer dos métodos así

public void metodo(int parametro) {
   ...
}
public int metodo (int parametro) {
   ...
}

ya que la diferencia en el tipo devuelto void o int no sirve para sobrecargar metodo().