
La sobreescritura de métodos, también llamada redefinición de métodos, este concepto se utiliza en herencia. Cuando una clase hereda de otra, el comportamiento de los métodos se ajusta las exigencias de la nueva clase. En estos casos, la subclase debe escoger por volver a reescribir el método heredado, es lo que lo que se denomina sobreescritura de un método. Para identificar un método sobreescrito es cuando tiene una anotación @override. Esta anotación ayuda al compilador a reconocer métodos que se están sobreescribiendo en una subclase.
Ejemplo
public class Vehiculo { // superclase
public void conducir(){
System.out.println(«Conducir un vehículo»);
}
}
public class Trailer extends Vehiculo{ // subclase
@Override
public void conducir(){
System.out.println(«Conducir un trailer»);
}
}
Observemos que la clase Trailer hereda de la clase Vehículo, la clase o superclase Vehículo tiene el método conducir con una declaración distinta del método conducir de la clase o subclase Trailer, al tener la anotación @Override nos indica que el método conducir de la clase Trailer se está sobreescribiendo, y se le puede dar funcionalidad diferente al método conducir de la clase o superclase Vehículo.
Reglas básicas de formación de métodos sobreescritos
- La lista de parámetros del método debe ser exactamente la misma.
- El tipo de valor de retorno debe de ser el mismo.
- No se puede sobreescibir un método definido como estático (static).
- No se puede sobreescibir un método definido como final.