Introducción a la sobrecarga y anulación en Java

Veamos primero lo que el nombre sugiere a primera vista. "Sobrecargar" significa: poner una carga extra en la funcionalidad original de cualquiera, ¿verdad? Mientras que "anular" significa: proporcionar una nueva funcionalidad además de la funcionalidad original de cualquier persona. En este artículo, veremos en detalle la sobrecarga y la anulación en Java. Sí, en Java también, estos se implementan de la misma manera mediante programación. Echemos un vistazo a eso uno por uno.

Sobrecarga en Java

Cuando una clase java tiene múltiples métodos con el mismo nombre pero con diferentes argumentos, la llamamos sobrecarga de métodos. Al mantener el mismo nombre, solo estamos aumentando la legibilidad del código del programa. Por ejemplo, supongamos que necesitamos realizar alguna operación de suma en algunos números dados. Digamos que el nombre de nuestro método es "suma ()". Aquí, la suma se puede hacer entre dos números, tres números o más. Por lo tanto, dependiendo de cuántos números implicarán la operación de suma, podemos cambiar los argumentos (o parámetros) de la función. Pero, en lugar de esto, si escribiera diferentes métodos para el número diferente de argumentos, sería difícil de reconocer ya que el nombre sería diferente. Por lo tanto, al sobrecargar, estamos logrando una mejor legibilidad de nuestro código. Entonces, la pregunta es ¿cómo lograremos la sobrecarga?

Veamos esos por uno con códigos de ejemplo.

Método n. ° 1: modificando el número de parámetros

Entonces aquí, haremos operaciones de suma en algunos números. Para esto, creemos una clase llamada "AdditionOperation". Dentro de esa clase, tengamos dos métodos llamados "suma ()". En uno de esos métodos, realizaremos una suma de dos números. En el otro, realizaremos la suma de tres números. Esto lo lograremos simplemente cambiando el número de parámetros en esos métodos, pero mantendremos el nombre igual. De esta manera, estamos sobrecargando el método "suma ()" aquí.

Código:

public class AdditionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static int addition(int num1, int num2, int num3)(return num1+num2+num3;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35, 36, 37)); //method overloading, we are calling same methods but for different number of arguments.
)
)

Salida:

Método 2: modificando el tipo de datos

Entonces, aquí, haremos operaciones de suma en diferentes tipos, por ejemplo, entre tipo entero y entre tipo doble. Para esto, creemos una clase llamada "AdditionOperation". Dentro de esa clase, tengamos dos métodos llamados "suma ()". En uno de esos métodos, realizaremos la suma de dos enteros. En el otro, realizaremos la suma de dos dobles. Esto lo lograremos simplemente cambiando el tipo de parámetros en esos métodos, pero mantendremos el nombre igual. De esta manera, estamos sobrecargando el método "suma ()" aquí.

Código:

public class additionOperation (
static int addition(int num1, int num2)(return num1+num2;) //function declarationand definition for addition of two numbers
static double addition(double num1, num2)(return num1+num2;) //function declarationand definition for addition of three numbers
public static void main(String args()) (
system.out.printin(addition(35, 36)); //method overloading
system.out.printin(addition(35.5, 36.6)); //method overloading, we are calling same methods but for different type of arguments.
)
)

Salida:

Puntos a tener en cuenta por sobrecarga

  • La sobrecarga en Java es básicamente una "sobrecarga de métodos de tiempo de compilación en el orfismo de C #". El polimorfismo en tiempo de compilación en Java también se denomina "Despacho de método estático" o "Unión temprana". Entonces, ¿qué quiero decir con esa jerga?
  • El polimorfismo, como su nombre indica, es básicamente una capacidad de adoptar muchas formas (poli: muchos, morph: forma). Entonces, aquí el enlace o enlace de la función sobrecargada y el objeto se realiza en tiempo de compilación. Por eso se llama polimorfismo en tiempo de compilación.
  • Básicamente aquí, el enlace de la función al objeto se realiza antes del tiempo de ejecución (es decir, durante el tiempo de compilación), por lo tanto, también se denomina "Enlace temprano".
  • El envío estático es un tipo de envío de método o polimorfismo que indica cómo Java seleccionará qué funcionalidad del método se utilizará en tiempo de compilación. (Quiero decir, si realizará la suma de dos números o tres números en nuestro ejemplo de codificación). Entonces, el nombre también se conoce como el método estático Dispatch.

Anulación en Java

  • Cuando una subclase de Java o una clase secundaria tiene un método que tiene el mismo nombre y contiene los mismos parámetros o argumentos y un tipo de retorno similar a un método que está presente en su superclase o clase principal, entonces podemos llamar al método de la clase secundaria como Un método anulado del método de su clase padre.
  • Por ejemplo, supongamos que necesitamos realizar alguna operación de visualización de acuerdo con su tipo de clase. Quiero decir, si llamo al método de una clase principal, mostrará un mensaje que se define en una clase principal. Pero, cuando llamamos al método de la clase secundaria, anulará el mensaje de visualización de su clase principal y mostrará el mensaje de visualización que se define dentro del método de la clase secundaria. Por lo tanto, dependiendo de la pantalla que necesitemos mostrar, podemos llamar a la clase relacionada (padre o hijo). Aquí no estamos cambiando el nombre del método, el argumento y el tipo de retorno. Solo estamos cambiando la funcionalidad del método en la clase secundaria. Pero, en lugar de esto, si no hacemos una anulación, es decir, no damos la implementación específica del método hijo, al llamar al método, mostrará el mismo mensaje que el presente en una clase principal.
  • Mientras escribimos el código, usaremos la anotación @ Override antes de que se anule el método. La anotación @Override le dice al compilador que se supone que el método debe anular un método que se declaró en una superclase. Aunque no es obligatorio usar esto, ayuda a prevenir errores. Si un método anotado con @Override no puede anular un método, el compilador genera un error.

Reglas para la anulación del método Java

  1. El método debe tener el mismo nombre que en la clase padre
  2. El método debe tener el mismo parámetro que en la clase padre.
  3. Debe haber una relación IS-A (herencia).

Código:

//Parent or Super class
class Parent (
public void display() (
system.out.printin("Hello, I am from parent class");
)
)
//Child or sub class
class Sub extends Parent (
//Below method overrides the Parent display() method
// @override
public void display() (
system.out.printin("Hello, I am from child class");
)
)
//Driver class
public class Overriding (
public static void main?(String args())
(
Parent superObject = new Parent ();
superObject.display(); // Super class method is called
Parent subObject = new Sub();
subObject.display(); //Child class method is called by a parent type reference: this is functionality of method overriding
Sub subObject2 = new Sub(); //Child class method is called by a child type reference
subObject2.display();
)
)

Salida:

Limitaciones en la anulación de métodos:

  1. Los métodos privados de la clase principal no se pueden anular.
  2. Los métodos finales no pueden ser anulados
  3. Los métodos estáticos no pueden anularse

Puntos a tener en cuenta para anular

  • La sobrecarga en Java es básicamente un "Polimorfismo en tiempo de ejecución". El polimorfismo en tiempo de ejecución en Java también se denomina "Despacho de método dinámico" o "Enlace tardío". Entonces, ¿qué se entiende por esa jerga?
  • El polimorfismo, como su nombre indica, es básicamente una capacidad de adoptar muchas formas (poli: muchos, morph: forma). Entonces, aquí la llamada a una función sobrecargada con el objeto se realiza el tiempo de ejecución. Por eso se llama polimorfismo en tiempo de ejecución.
  • Básicamente aquí, la unión de la función al objeto se realiza tarde, después de la compilación (es decir, durante el tiempo de ejecución); por lo tanto, también se denomina "Enlace tardío".
  • El despacho dinámico es un tipo de polimorfismo o despacho de método que indica cómo Java seleccionará qué funcionalidad del método se utilizará en tiempo de ejecución. Por lo tanto, el nombre también se conoce como Despacho de método dinámico.

Conclusión

Esto concluye nuestro aprendizaje del tema "Sobrecarga y anulación en Java". Escriba los códigos mencionados en los ejemplos anteriores en el compilador de Java y verifique la salida. El aprendizaje de códigos será incompleto si no lo hace usted mismo, ya que esto mejorará sus habilidades de codificación. Feliz codificación !!

Artículos recomendados

Esta es una guía de sobrecarga y anulación en Java. Aquí discutimos métodos en Sobrecarga junto con reglas y limitaciones de Anulación en Java. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. Anulación en JavaScript
  2. Anulación en POO
  3. ¿Qué son los genéricos en Java?
  4. Anulación en PHP
  5. Sobrecarga de Python
  6. Herencia en PHP
  7. Guía completa de herencia en Python
  8. Sobrecarga y anulación en C #
  9. Tipos y errores de manejo en JavaScript
  10. Ejemplos y cómo funcionan los genéricos en C #
  11. Función y reglas de anulación en Python