Sobrecarga de metodos y constructores JAVA

En java, una clase puede contener dos métodos con el mismo nombre si:
  • Tienen diferente número de argumentos
  • Si el tipo de los argumentos es distinto, aunque tenga el mismo número de ellos.
Para entender esta sencilla propiedad de java, lo mejor es contemplar el siguiente ejemplo de dos métodos sobrecargados.
public void unMetodo(int numeroEntero) {
    //Codigo del metodo
}
public void unMetodo(float numeroReal) {
    //Codigo del metodo
}
Como vemos, ambos métodos tienen el mismo nombre y el mismo número de argumentos, en cambio el argumento que reciben es de distinto tipo de modo que cuando se llame al método unMetodo(15), se ejecutará el primero, y cuando se llame de esta manera unMetodo(15.5f), se ejecutará el segundo.

java

Lo mismo ocurre con los constructores, estos pueden sobrecargarse siguiendo las mismas reglas que los métodos. Si recuerda la anterior entrada sobre las clases en java, en ella había ejemplos donde utilizábamos dos constructores, el llamado constructor por defecto sin argumentos, y otro con una lista de argumentos, sobrecargando así el constructor.

Una nota importante es que el tipo de retorno NO sirve para distinguir métodos. Si dos métodos tienen el mismo número de argumentos, y sus tipos son iguales, no podremos sobrecargar dichos métodos utilizando diferentes tipos de retorno en cada uno.
//ESTE EJEMPLO CONTIENE UN ERROR
public int unMetodo(int i){
    //Codigo del metodo
}
public float unMetodo(int i){
    //Codigo del metodo
}
El ejemplo anterior obtendrá un error en tiempo de compilación avisándonos de que hay dos métodos iguales, ya que ambos tienen el mismo nombre, el mismo numero de argumentos, y estos son del mismo tipo.

A continuación podréis ver un ejemplo completo utilizando sobrecarga de métodos y constructores en un caso real.
//Nombre archivo: Main.java
public class Main {
    public static void main(String[] args) {
        Persona p1 = new Persona();
        Persona p2 = new Persona("Alex");
        Persona p3 = new Persona(20);
        Persona p4 = new Persona("Alex", 20);

        System.out.println("Nombre: " + p1.nombre + ", edad: " + p1.edad);
        System.out.println("Nombre: " + p2.nombre + ", edad: " + p2.edad);
        System.out.println("Nombre: " + p3.nombre + ", edad: " + p3.edad);
        System.out.println("Nombre: " + p4.nombre + ", edad: " + p4.edad);

        p1.unMetodo(15);
        p1.unMetodo(15.5f);
    }
}
//Nombre archivo: Persona.java
public class Persona {
    public String nombre;
    public int edad;

    public Persona() {}
    public Persona(String nombre) {
        this.nombre = nombre;
    }
    public Persona(int edad) {
        this.edad = edad;
    }

    public Persona(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }
    public void unMetodo(int i) {
        System.out.println("Un metodo con argumento entero");
    }
    public void unMetodo(float i) {
        System.out.println("Un metodo con argumento real");
    }
}

Comentarios

  1. Te felicito por tu trabajo, es bueno ver que hay personas que le gusta programar y compartir sus conocimientos

    ResponderEliminar
  2. Te felicito por tu trabajo, es bueno ver que hay personas que le gusta programar y compartir sus conocimientos

    ResponderEliminar
  3. Te felicito por tu trabajo, es bueno ver que hay personas que le gusta programar y compartir sus conocimientos

    ResponderEliminar
  4. Te felicito por tu trabajo, es bueno ver que hay personas que le gusta programar y compartir sus conocimientos

    ResponderEliminar
  5. Gracias me esta sirviendo mucho todo!

    ResponderEliminar
  6. Gracias me esta sirviendo mucho todo!

    ResponderEliminar
  7. Muy buen trabajo lastima que no sirves de nada como programador, saludos
    Saul Enrique Roque Jimenez

    ResponderEliminar
  8. Buen trabajo, lastima que no sirva para nada como programador. Atte Cristian Ramiro Avalos Aguilar

    ResponderEliminar

Publicar un comentario

Si tenéis alguna duda o sugerencia, no dudéis en comentar. ;)

Entradas populares de este blog

Autocompletado de codigo en Sublime Text

Compilar y ejecutar JAVA desde Notepad++

Compilar y ejecutar JAVA desde Sublime Text