DEV Community

Víctor Javariz
Víctor Javariz

Posted on • Updated on

La anotación @Override de Java

¿Qué hace la anotación @Override?

La anotación @Override de Java se utiliza dentro de una subclase cuando queremos sobrescribir un método que se ha heredado de una superclase. Para usarlo, el "nuevo" método debe ser escrito luego de la anotación y debe tener el mismo nombre que tiene el método de la superclase que desea sobrescribir. Por ejemplo:

public class Vehiculo {

    public void accion() {
        System.out.println("Estoy sentado dentro de un vehículo.");
    } 
}
Enter fullscreen mode Exit fullscreen mode
public class Motocicleta extends Vehiculo {

    @Override
    public void accion() {
        System.out.println("Estoy montado en una motocicleta.");
    }
}
Enter fullscreen mode Exit fullscreen mode

En este ejemplo, tenemos dos clases: Vehiculo y Motocicleta. Este último, al ser una clase que extiende a otra (es decir, al ser una subclase), hereda el método disponible dentro de la superclase Vehiculo (accion()). Si quisiéramos utilizar el método tal y como está dentro de Vehiculo desde Motocicleta (o en alguna de sus instancias), podríamos omitir por completo su declaración dentro de Motocicleta. Como podemos ver, el método se ha declarado de igual manera, pero ahora su ejecución tendrá un resultado distinto.

¿Es necesario el uso de @Override? ¿Me dará un error si no lo utilizo?

No.

¿Puedes elaborar?

Claro. Aunque se puede declarar el método nuevamente dentro de la subclase sin utilizar @Override y obtendríamos el mismo resultado, es de buena práctica utilizarlo ya que nos ofrece varios beneficios durante el desarrollo y la ejecución de nuestro programa o aplicación.

Nos ayuda a tener mejor documentación.

Al utilizar la anotación, no solo le estamos notificando al compilador que el método se declara para sobrescribir el método de la superclase, pero también a nosotros mismos y a cualquier otro desarrollador que trabaje con nuestro código.

Nos ayuda a evitar errores.

Si de casualidad usted, o algún otro desarrollador, borra el método "original" o escribe el método "nuevo" con errores ortográficos o de sintaxis, el compilador nos avisará al respecto. Si alguno de estos errores están presente en nuestro código y no hemos incluido la anotación @Override, el método ya vendría a ser realmente "nuevo" y aparte al original que estamos tratando de sobrescribir.

He escuchado o leído el término overloading, ¿es lo mismo?

No.

... Elabora, por favor.

Con gusto. Nosotros sobrecargarmos (la traducción de overload) un método al crear otro método con el mismo nombre, pero lo declaramos con un número distinto de parámetros o de distintos tipos. En este caso, el método no ha sido anulado por el "nuevo", sino que se puede utilizar de las maneras distintas en que lo hemos declarado. Además, ambos métodos deben estar disponible dentro de la misma clase. Un ejemplo de un método sobrecargado sería:

public class Main
{
    private static void saludo() {
        System.out.println("¡Hola!");
    }

    private static void saludo(String nombre) {
        System.out.println("!Hola, " + nombre + "!");
    }

    public static void main(String[] args) {
        saludo();
        saludo("Helena");
    }
}
Enter fullscreen mode Exit fullscreen mode

El resultado de la ejecución de este ejemplo sería:

¡Hola!
¡Hola, Helena!
Enter fullscreen mode Exit fullscreen mode

¿Eso es todo?

Por ahora.

Top comments (0)