Categorías
Basics

Anulación frente a sobrecarga en Java

Overriding y Overloading son dos conceptos muy importantes en Java. Son confusos para los programadores novatos de Java. Esta publicación ilustra sus diferencias usando dos ejemplos simples.

1. Definiciones

Sobrecarga ocurre cuando dos o más métodos en una clase tienen el mismo nombre de método pero diferentes parámetros.

Primordial significa tener dos métodos con el mismo nombre de método y parámetros (es decir, firma del método). Uno de los métodos está en la clase principal y el otro en la clase secundaria. La anulación permite que una clase secundaria proporcione una implementación específica de un método que ya se proporciona en su clase principal.

2. Anulación frente a sobrecarga

A continuación, se muestran algunos datos importantes sobre la anulación y la sobrecarga:

1). El tipo de objeto real en el tiempo de ejecución, no el tipo de la variable de referencia, determina qué método anulado se usa en tiempo de ejecución. Por el contrario, el tipo de referencia determina qué método sobrecargado se utilizará en tiempo de compilación.
2). El polimorfismo se aplica a la sobrecarga, no a la sobrecarga.
3). La anulación es un concepto de tiempo de ejecución, mientras que la sobrecarga es un concepto de tiempo de compilación.

3. Un ejemplo de anulación

A continuación, se muestra un ejemplo de anulación. Después de leer el código, adivina el resultado.

class Dog{
    public void bark(){
        System.out.println("woof ");
    }
}
class Hound extends Dog{
    public void sniff(){
        System.out.println("sniff ");
    }
 
    public void bark(){
        System.out.println("bowl");
    }
}
 
public class OverridingTest{
    public static void main(String [] args){
        Dog dog = new Hound();
        dog.bark();
    }
}
  El método substring () en JDK 6 y JDK 7

Producción:

bowl

En el ejemplo anterior, el dog La variable se declara como una Dog. Durante el tiempo de compilación, el compilador comprueba si el Dog la clase tiene el bark() método. Siempre y cuando el Dog la clase tiene el bark() método, los compiladores de código. En tiempo de ejecución, un Hound se crea y se asigna a dog. La JVM sabe que dog se refiere al objeto de Hound, por lo que llama al bark() método de Hound. Esto se llama polimorfismo dinámico.

4. Un ejemplo de sobrecarga

class Dog{
    public void bark(){
        System.out.println("woof ");
    }
 
    //overloading method
    public void bark(int num){
    	for(int i=0; i<num; i++)
    		System.out.println("woof ");
    }
}

En este ejemplo de sobrecarga, los dos bark El método se puede invocar utilizando diferentes parámetros. El compilador sabe que son diferentes porque tienen una firma de método diferente (nombre del método y lista de parámetros del método).

Referencias:
1) Método de definición. Este tutorial es de Oracle, explica los componentes de un método y cuáles son usados ​​por el compilador para diferenciar métodos.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *