Este tema no es complejo pero si importante para tener en cuenta. Una sobrecarga de métodos o funciones se conoce por tener mas de un método con el mismo nombre, aplicando hasta el momento lo dicho generaría errores al momento de compilar, en este punto se debe de aclarar ciertas características que posee la sobrecarga de métodos:
- [important]
- Los métodos sobrecargados poseen el mismo nombre sin importar el numero de métodos que hayan.
- Se puede usar cualquier tipo de método (String, int, float, Double, etc….). Recordemos que si el método es diferente de Void se debe de retornar un valor dependiendo del tipo de método declarado.
- Los parámetros o argumentos que posean los métodos sobrecargados pueden ser de diferentes tipos y diferente cantidad de estos.
[/important]
Si en este momento no se tiene muy claro el concepto lo ilustrare a continuación usando como ejemplo el anterior post, resumiendo en este se tiene una calculadora que recibe dos números para realizar las operaciones básicas (suma, resta, división, multiplicación), pero, Si es necesario usar mas números para realizar las mismas operaciones? La pequeña variación que haré es usar hasta 3 números, ya con esto se usara la sobrecarga de métodos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | /** * @author belial9826 * www.jagonzalez.org */ public class operaciones { //comienzo clase operaciones public int suma(int n1, int n2){//metodo para sumar, recibe dos numeros int op; //variable que almacena la respuesta op = n1 + n2; //operacion return op; //devuelve el valor de la operacion } //fin metodo suma public int suma(int n1, int n2, int n3){//metodo para sumar, recibe tres numeros int op; //variable que almacena la respuesta op = n1 + n2 + n3; //operacion return op; //devuelve el valor de la operacion } //fin metodo suma public int resta (int n1, int n2){ //metodo para restar, recibe dos numeros int op; //variable que almacena la respuesta op = n1 - n2; //operacion return op; //devuelve el valor de la operacion }// fin metodo resta public int resta (int n1, int n2, int n3){ //metodo para restar, recibe tres numeros int op; //variable que almacena la respuesta op = n1 - n2 - n3; //operacion return op; //devuelve el valor de la operacion }// fin metodo resta public int multiplicacion(int n1, int n2){ //metodo para multiplicar, recibe dos numeros int op; //variable que almacena la respuesta op = n1 * n2; //operacion return op; //devuelve el valor de la operacion } //fin metodo multiplicacion public int multiplicacion(int n1, int n2, int n3){ //metodo para multiplicar, recibe tres numeros int op; //variable que almacena la respuesta op = n1 * n2 * n3; //operacion return op; //devuelve el valor de la operacion } //fin metodo multiplicacion public int division(int n1, int n2){ //metodo para division, recibe dos numeros int op; //variable que almacena la respuesta op = n1 / n2; //operacion return op; //devuelve el valor de la operacion }//fin metodo division public boolean isNum(String n){//metodo para validar si se ha ingresado un numero, recibe una cadena de texto int a;//variable que almacena la cadena a convertir try{ a = Integer.parseInt(n); //se convierte la cadena return true; //si se ha convertido a entero devuelve verdadero } catch(NumberFormatException e){ return false; //si no se ha convertido a entero devuelve falso } }//fin metodo validar }//fin clase operaciones |
/** * @author belial9826 * www.jagonzalez.org */ public class operaciones { //comienzo clase operaciones public int suma(int n1, int n2){//metodo para sumar, recibe dos numeros int op; //variable que almacena la respuesta op = n1 + n2; //operacion return op; //devuelve el valor de la operacion } //fin metodo suma public int suma(int n1, int n2, int n3){//metodo para sumar, recibe tres numeros int op; //variable que almacena la respuesta op = n1 + n2 + n3; //operacion return op; //devuelve el valor de la operacion } //fin metodo suma public int resta (int n1, int n2){ //metodo para restar, recibe dos numeros int op; //variable que almacena la respuesta op = n1 - n2; //operacion return op; //devuelve el valor de la operacion }// fin metodo resta public int resta (int n1, int n2, int n3){ //metodo para restar, recibe tres numeros int op; //variable que almacena la respuesta op = n1 - n2 - n3; //operacion return op; //devuelve el valor de la operacion }// fin metodo resta public int multiplicacion(int n1, int n2){ //metodo para multiplicar, recibe dos numeros int op; //variable que almacena la respuesta op = n1 * n2; //operacion return op; //devuelve el valor de la operacion } //fin metodo multiplicacion public int multiplicacion(int n1, int n2, int n3){ //metodo para multiplicar, recibe tres numeros int op; //variable que almacena la respuesta op = n1 * n2 * n3; //operacion return op; //devuelve el valor de la operacion } //fin metodo multiplicacion public int division(int n1, int n2){ //metodo para division, recibe dos numeros int op; //variable que almacena la respuesta op = n1 / n2; //operacion return op; //devuelve el valor de la operacion }//fin metodo division public boolean isNum(String n){//metodo para validar si se ha ingresado un numero, recibe una cadena de texto int a;//variable que almacena la cadena a convertir try{ a = Integer.parseInt(n); //se convierte la cadena return true; //si se ha convertido a entero devuelve verdadero } catch(NumberFormatException e){ return false; //si no se ha convertido a entero devuelve falso } }//fin metodo validar }//fin clase operaciones
Como se puede apreciar en las lineas 7 y 14 se puede ver el funcionamiento de la sobrecarga, dependiendo del uso (2 números o 3) se invoca el método deseado, esto sucede para los métodos resta y multiplicacion ya que para el de división queda de tarea para ustedes. Como dije al principio este tema no es difícil ni mucho menos tedioso, espero haber aclarado alguna duda respecto al tema del post. Como siempre agradezco cualquier comentario que deseen dejar.
Buen post, estaría bueno si haces algunos ejemplos más para observar el comportamiento de los métodos, y también si hablaras sobre como tratar las excepciones de de los métodos. Saludos.
ayuda porfavor
me piden realizar un metodo que reciba 2 parametros enteros y retorne la division, la division tiene que realizarse con restas sucesivas….
help pleace…!!!
gracias
Cuando te refieres a que la división tiene que realizarse con restas sucesivas, que es realmente eso…
restas sucesivas son divisiones
sumas sucesivas son multiplicaciones
Saludos,
Preciso hice un Post con el tema de tu apuro, espero te sirva 😉 lo encontraras en el siguiente link.