13.3 Herencia y polimorfismo en Java: anulación de métodos

La herencia es uno de los pilares fundamentales de la Programación Orientada a Objetos (OOP), permitiendo la creación de nuevas clases basadas en clases existentes. En Java, esto se hace con la palabra clave extends. La herencia promueve la reutilización del código y la creación de una jerarquía de clases. Asociado a la herencia tenemos el concepto de polimorfismo, que, en su forma más simple, puede entenderse como la capacidad que tiene un objeto de ser referenciado de varias maneras.

El polimorfismo se manifiesta de dos maneras principales en Java: sobrecarga de métodos y anulación de métodos. En esta sección, nos centraremos en la anulación de métodos, que es un mecanismo mediante el cual una subclase proporciona una implementación específica de un método que ya proporciona una de sus superclases.

Comprensión de la anulación de métodos

La anulación de métodos ocurre cuando una subclase en Java redefine un método de la superclase. Para que un método sea anulado, debe tener la misma firma en la subclase y en la superclase, es decir, el mismo nombre y los mismos parámetros. La anulación es una poderosa herramienta que permite que una clase herede métodos de una clase principal y aun así modifique su comportamiento según sea necesario.

Reglas para anular métodos

Hay algunas reglas importantes que se deben seguir para anular correctamente un método en Java:

  • El método de la subclase debe tener el mismo nombre, tipo de retorno (o subtipo) y parámetros que el método de la clase principal.
  • La visibilidad del método anulado en la subclase no puede ser más restrictiva que la visibilidad del método en la clase principal.
  • El método anulado no puede generar excepciones marcadas más amplias que las lanzadas por el método de la clase principal.
  • Los métodos marcados como final no se pueden sobrescribir.
  • Los métodos estáticos no se anulan, sino que se ocultan, lo cual es un concepto diferente.

Ejemplo de anulación de método

Consideremos un ejemplo sencillo para ilustrar la anulación de métodos:


clase animal {
    public void emitSound() {
        System.out.println("El animal emite un sonido.");
    }
}

clase Perro extiende Animal {
    @Anular
    public void emitSound() {
        System.out.println("El perro ladra: ¡Guau! ¡Guau!");
    }
}

En el ejemplo anterior, la clase Dog anula el método EmitSound de la clase Animal. Cuando un objeto de tipo Dog llama al método emitSound, se ejecuta la implementación anulada, lo que hace que se imprima "El perro ladra: ¡Guau! ¡Guau!". en lugar de "El animal hace un sonido".

Usando la anotación @Override

La anotación @Override se utiliza encima del método de anulación. Aunque no es obligatorio, es una buena práctica usarlo porque le dice al compilador que desea anular un método de superclase. Si el método correspondiente no se encuentra en la superclase, el compilador genera un error, evitando posibles errores tipográficos o de firma del método.

Beneficios de la anulación de métodos

La anulación de métodos permite a los desarrolladores crear sistemas más flexibles y reutilizables. Ofrece los siguientes beneficios:

  • Comportamiento específico: Las subclases pueden definir un comportamiento específico que es diferente del comportamiento definido por la superclase.
  • Polimorfismo: El mismo método puede tener varias implementaciones diferentes, dependiendo del objeto al que se hace referencia.
  • Mantenimiento de código simplificado: si se modifica un método de superclase, solo es necesario cambiar las anulaciones que dependen de la implementación original.

Consideraciones finales

La anulación de métodos es una característica esencial en programación orientada a objetos y Java. Permite a los desarrolladores crear clases más especializadas que se comportan adecuadamente manteniendo la coherencia y la reutilización del código. Al comprender y aplicar correctamente la anulación de métodos, puede crear sistemas sólidos y fácilmente extensibles.

Finalmente, es importante recordar que la anulación de métodos es sólo un aspecto del polimorfismo en Java. Otros aspectos, como la sobrecarga de métodos y la implementación de interfaces, también desempeñan un papel crucial en la creación de aplicaciones complejas y flexibles. Con práctica y comprensión de estos conceptos, estará bien equipado para aprovechar el poder de la programación orientada a objetos en sus proyectos Java.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre la anulación de métodos en Java es correcta?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Herencia y polimorfismo en Java: uso de 'super' para acceder a miembros de la superclase

Siguiente página del libro electrónico gratuito:

88Herencia y polimorfismo en Java: uso de 'super' para acceder a miembros de la superclase

6 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.