Métodos sobrecargados en Java
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().