Las ventajas y desventajas del método de sobrecarga en Java

Los métodos sobrecargados son métodos de la misma clase que comparten el mismo nombre pero aceptan diferentes tipos de variables como argumentos. Por ejemplo, una clase puede contener dos métodos de "agregar" diferentes:uno que acepta dos valores dobles, "agregar (doble a, doble b)", y otro que acepta dos valores enteros, "agregar (int a, int b). " La computadora decide automáticamente qué método llamar en tiempo de ejecución en función de los tipos de variables que se pasan al método.

Flexibilidad

Los métodos sobrecargados brindan a los programadores la flexibilidad de llamar a un método similar para diferentes tipos de datos. Si está trabajando en un programa de matemáticas, por ejemplo, podría usar la sobrecarga para crear varias clases "multiplicar", cada una de las cuales multiplica un número diferente de tipo de argumento:el más simple "multiplicar (int a, int b)" multiplica dos números enteros; el método más complicado "multiplicar (doble a, int b, int c)" multiplica un doble por dos enteros; luego puede llamar a "multiplicar" en cualquier combinación de variables para las que creó un método sobrecargado y recibir el resultado adecuado.

Constructores

La sobrecarga también se usa en los constructores para crear nuevos objetos dadas diferentes cantidades de datos. Por ejemplo, podría usar la sobrecarga para crear tres constructores diferentes para un objeto "Casa" con variables de número de casa, nombre de calle y color. El constructor más simple, "Casa()", no acepta argumentos y crea una casa con variables predeterminadas o vacías. Un constructor más complejo, "House(int houseNumber, String streetName)", crea una casa con el número de casa y el nombre de la calle especificados, pero con un color predeterminado o vacío. El constructor más complejo, "House(int houseNumber, String streetName, String color)", crea una casa con toda la información especificada, sin dejar nada por defecto. A continuación, podría crear un objeto de casa en función de la información disponible actualmente, con la información no disponible en blanco o de forma predeterminada.

Referencias ambiguas

Los métodos sobrecargados deben usar diferentes números o tipos de argumentos para evitar la ambigüedad. Si crea dos métodos en la misma clase que tienen el mismo nombre y acepta dos números enteros como argumentos, el compilador de Java no podrá distinguir entre los dos, incluso si las variables de entrada tienen nombres diferentes. Por ejemplo, el método "add(int a, int b)" no puede existir en la misma clase que el método "add(int c, int d)".

Tipos de devolución

Debe definir un tipo de devolución para cada método sobrecargado. Los métodos pueden tener diferentes tipos de devolución; por ejemplo, "add(int a, int b)" puede devolver un número entero, mientras que "add(double a, double b)" devuelve un doble. Sin embargo, Java no puede distinguir entre dos métodos diferentes en función de su tipo de devolución. Por lo tanto, "int multiplicar (doble a, doble b)" no puede existir en la misma clase que "doble multiplicar (doble a, doble b)".