Otras lecciones del Curso de Java
¿Qué es IO en Java?
¿Cúales son los Operadores en Java?
¿Qué tipos de Variables hay en Java?
¿Cómo funciona Continue y Break en Java?
¿Cómo aplicar un Try Catch y Finally en Java?
¿Cómo utilizar el método super en Java?
¿Cómo trabajar con listas en Java?
¿Cuáles son los métodos de la clase String en Java?
¿Qué es un entorno de desarrollo en Java?
¿Cómo utilizar un return en Java?
¿Cómo hacer un Hola Mundo en Java?
¿Cómo utilizar Throw y throws en Java?
¿Cómo hacer comentarios en Java?
¿Cuáles son las Palabras reservadas en Java?
Variables de entorno en Java
Características y estadísticas de Java e índice TIOBE
Estructura de proyecto, paquetes y clases en Java
Qué es una función en Java
¿Cómo funcionan las Funciones Java?
Operadores aritméticos en Java
Operadores de comparación en Java
Funciones anónimas en Java
Cómo invocar una función en Java
Atajos de teclado para IntelliJ
¿Qué es la Sobrecarga de funciones en Java?
Operadores lógicos en Java
Debug en Java
Como se crea una función en Java
¿Cómo crear Sentencias Switch en Java?
Bucles for en Java
¿Cómo hacer sentencias If e If else en Java?
¿Cómo funcionan los Bucles While en Java?
¿Qué son los objetos en Java?
¿Qué es el modificador static en Java y cómo se utiliza?
¿Qué es la herencia en Java?
¿Qué son los constructores en Java y cómo se utilizan?
¿Cómo crear clases en Java?
¿Qué es el Polimorfismo en Java?
¿Qué son las Clases Abstractas en Java?
¿Qué es la Programación genérica en Java?
¿Qué son las Interfaces de Java?
Implementación de una interface en Java
¿Cómo se hace refactoring en Java?
¿Cómo trabajar con Maps en Java?
¿Como funcionan los arrays en Java?
¿Cómo generar excepciones en Java?
¿Qué es la clase Scanner en Java?
Introducción a Swing en Java
¿Quieres descubrir más cosas como Sobreescritura en Java?¡Apuntate a nuestro campus y empieza a aprender con nosotros y con toda la comunidad!

Java permite la sobreescritura de funciones o métodos. Esto se enmarca dentro de la herencia, que a su vez forma parte de la programación orientada a objetos (POO) en este lenguaje.

De hecho, la sobreescritura de métodos es una de las formas en que se aborda el polimorfismo en Java. Para que sea posible es necesario que haya una clase principal con métodos definidos que serán heredados por las subclases. 

¿Qué es la sobreescritura de métodos en Java?

La sobreescritura en Java también es conocida con el nombre de polimorfismo de inclusión y no es otra cosa que una característica que permite a las clases secundarias o subclases hacer una implementación de un método que ha sido dado por una clase principal o superclase.

Si se crea un objeto de la clase principal y se invoca el método, se va a ejecutar el código que tiene este en esa clase, pero si se crea un objeto de la subclase y se invoca el método, se ejecuta la versión del método en esta subclase. 

Cuando se hace sobreescritura de un método en Java, se usa la anotación  @Override que le indicará al compilador que se trata de un método que está en la clase principal y se sobreescribirá en ese momento. 

El siguiente ejemplo muestra una idea general de cómo funciona esto en la práctica:

class Empleado {  //clase general
    public static int base = 400;
    int salario() {
        return base;
    }
}

class Gerente extends Empleado { //aquí estamos sobreescribiendo el método de la clase principal
    @Override
    int salario() {
        return base + 200;
    }
}

class Supervisor extends Empleado {
    @Override
    int salario() {
        return base + 100;
    }
}

class Main { // con esto vamos a imprimir el salario de cualquier trabajador

    static void imprimirSalario(Empleado Empleado) {
        System.out.println(Empleado.salario());
    }

    public static void main(String[] args) {

        Empleado Gerente = new Gerente();
        System.out.println("El salario del gerente es: ");
        imprimirSalario(Gerente);

        Empleado Supervisor = new Supervisor();
        System.out.println("El salario del supervisor es: ");
        imprimirSalario(Supervisor);

        Empleado Empleado1 = new Empleado();
        System.out.println("El salario del empleado es: ");
        imprimirSalario(Empleado1);
    }

¿Por qué es importante la sobreescritura de métodos en Java?

En la programación orientada a objetos (POO), la sobreescritura logra que una clase padre pueda enunciar una serie de métodos que serán comunes a todas las clases derivadas, pudiendo estas implementar el funcionamiento de estos de manera particular.

El propósito de realizar este proceso es extender la funcionalidad que tiene un método en una clase específica y adaptarlo a las necesidades de ese módulo en particular.

Reglas para aplicar la sobreescritura de métodos en Java

Para que funcione adecuadamente, la sobreescritura de métodos en Java debe cumplir con las siguientes condiciones:

  • El método debe tener el mismo nombre tanto en la clase principal como en la clase hija o subclase.
  • Tanto la lista de parámetros como el tipo de valor devuelto, deben ser iguales en ambas clases (principal y subclase).
  • Es imprescindible que haya una clase principal donde se declare el método y una clase hija que también lo implemente, es decir, es necesaria una relación de herencia.
  • Cada uno de los métodos que son declarados como abstractos en la clase principal, deben ser sobreescritos en la clase hija.
  • Si los métodos se declaran como estáticos, no se pueden sobreescribir.

Entonces, la sobreescritura en Java le proporciona al programador la posibilidad de darle mayor flexibilidad a un método según las necesidades que tenga la aplicación que esté desarrollando.

¿Todavía no te has apuntado a nuestro Bootcamp?
Tenemos muchos cursos para ofrecerte y ¡TOTALMENTE GRATIS! Estos son algunos de ellos: