13.2 Herencia y polimorfismo en Java: palabra clave 'extiende'

La herencia es uno de los pilares fundamentales de la programación orientada a objetos (POO). En Java, la herencia permite que una clase herede campos y métodos de otra clase, promoviendo la reutilización de código y la creación de una relación jerárquica entre clases. La palabra clave extends se utiliza para establecer esta relación de herencia entre dos clases.

Concepto de Herencia

En herencia, tenemos dos entidades principales: la clase padre (o superclase) y la clase hija (o subclase). La clase secundaria hereda los atributos y comportamientos de la clase principal, pero también puede definir sus propios miembros y comportamientos. Esto significa que la clase secundaria es una especialización de la clase principal, donde no solo tiene las características de la clase principal sino que también agrega sus propias características únicas.

Usando la palabra clave 'extiende'

Para implementar la herencia en Java, utilizamos la palabra clave extends en la declaración de clase secundaria. Veamos un ejemplo sencillo:


clase animal {
    comer vacío() {
        System.out.println("Este animal come");
    }
}

clase Perro extiende Animal {
    corteza vacía() {
        System.out.println("El perro ladra");
    }
}

En el ejemplo anterior, Dog es una subclase de Animal. Esto significa que Dog hereda el método eat() de Animal y también define su propio método bark(). Un objeto de clase Perro puede llamar a ambos métodos.

Polimorfismo y herencia

El polimorfismo es otro concepto clave en programación orientada a objetos que está estrechamente relacionado con la herencia. Significa "muchas formas" y permite que los objetos sean tratados como instancias de sus clases principales en lugar de sus clases reales. En Java, esto es posible gracias a la herencia y al hecho de que una variable de referencia de superclase puede apuntar a un objeto de subclase. Esto permite llamar a los métodos polimórficamente.

Por ejemplo:


Animal miAnimal = nuevo Perro();
miAnimal.comer(); // Llama al método de la clase Animal
// miAnimal.ladrar(); // Error de compilación: el tipo de animal no tiene el método de ladrido

Aquí, la variable myAnimal es de tipo Animal, pero apunta a una instancia de Dog. Esto permite llamar polimórficamente al método eat(). Sin embargo, si intentamos llamar a bark() a través de myAnimal, recibiremos un error de compilación, ya que el compilador solo conoce los métodos definidos en Animal.

Anulación de método

Una característica importante de la herencia en Java es la capacidad de anular métodos. Esto significa que una subclase puede proporcionar su propia implementación de un método que ya está definido en su superclase. Para anular un método, la subclase debe definir un método con la misma firma que el método de la superclase.


clase Gato extiende Animal {
    @Anular
    comer vacío() {
        System.out.println("El gato come pescado");
    }
}

En el ejemplo anterior, la clase Cat anula el método eat() de la clase Animal. La anotación @Override es opcional, pero es una buena práctica usarla porque le indica al compilador y a los desarrolladores que el método es una anulación intencional.

Polimorfismo y anulación de métodos

Cuando se anula un método, el polimorfismo garantiza que se llame a la versión anulada del método cuando el objeto se trata como una instancia de la superclase. Esta es una parte fundamental de lo que hace que el polimorfismo sea tan poderoso en Java.


Animal miGato = nuevo Gato();
miGato.comer(); // Llama al método anulado de la clase Cat

En este caso, incluso si myCat es de tipo Animal, el método eat() que se llama es el de la clase < code>Gato, porque el objeto real es una instancia de Gato.

Consideraciones finales

La herencia y el polimorfismo son conceptos fundamentales que permiten que las clases Java sean reutilizables, extensibles y manejables. La palabra clave extends es la puerta de entrada a la herencia, mientras que el polimorfismo permite que objetos de diferentes clases sean tratados de manera uniforme. Comprender estos conceptos es esencial para cualquier programador que quiera dominar Java y desarrollar sistemas robustos y flexibles.

Además, es importante ser consciente de las limitaciones y consideraciones al utilizar la herencia, como el problema del "diamante" en la herencia múltiple (que Java resuelve al no permitir la herencia múltiple de clases) y la importancia de la encapsulación para mantener una jerarquía de clases bien definidas y seguras.

En resumen, hiedrance y polimorfismo son herramientas poderosas que, cuando se usan correctamente, pueden mejorar significativamente el diseño y mantenimiento del software. La palabra clave extends es sólo el comienzo de un vasto mundo de posibilidades que ofrece la programación orientada a objetos.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre herencia y polimorfismo 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: anulación de métodos

Siguiente página del libro electrónico gratuito:

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

4 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.