Sobrecarga de metodos y constructores JAVA
En java, una clase puede contener dos métodos con el mismo nombre si:
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.
A continuación podréis ver un ejemplo completo utilizando sobrecarga de métodos y constructores en un caso real.
- Tienen diferente número de argumentos
- Si el tipo de los argumentos es distinto, aunque tenga el mismo número de ellos.
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.
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"); } }
Te felicito por tu trabajo, es bueno ver que hay personas que le gusta programar y compartir sus conocimientos
ResponderEliminarTe felicito por tu trabajo, es bueno ver que hay personas que le gusta programar y compartir sus conocimientos
ResponderEliminarTe felicito por tu trabajo, es bueno ver que hay personas que le gusta programar y compartir sus conocimientos
ResponderEliminarTe felicito por tu trabajo, es bueno ver que hay personas que le gusta programar y compartir sus conocimientos
ResponderEliminarGracias me esta sirviendo mucho todo!
ResponderEliminarGracias me esta sirviendo mucho todo!
ResponderEliminarMuy buen trabajo lastima que no sirves de nada como programador, saludos
ResponderEliminarSaul Enrique Roque Jimenez
Buen trabajo, lastima que no sirva para nada como programador. Atte Cristian Ramiro Avalos Aguilar
ResponderEliminar