13.7 Herencia y polimorfismo en Java: clases abstractas

La programación orientada a objetos (POO) es un paradigma de programación que utiliza "objetos" para modelar datos y comportamiento. Java, al ser un lenguaje orientado a objetos, soporta plenamente conceptos como herencia y polimorfismo, fundamentales para reutilizar código y mejorar el mantenimiento de sistemas complejos. En este capítulo, exploraremos el concepto de herencia y polimorfismo en Java, con especial atención en las clases abstractas.

Herencia en Java

La herencia es un mecanismo mediante el cual una nueva clase, llamada subclase, puede heredar propiedades y métodos de otra clase, llamada superclase. La subclase puede agregar nuevos campos y métodos o anular métodos heredados. La principal ventaja de la herencia es la capacidad de reutilizar el código existente, lo que hace que el software sea más fácil de desarrollar y mantener.

En Java, la herencia se realiza utilizando la palabra clave extends. Por ejemplo:


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

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

La clase Dog hereda el método eat() de la clase Animal, pero también define su propio método, bark( ) .

Polimorfismo en Java

El polimorfismo es la capacidad de un objeto de ser referenciado de múltiples maneras. En Java, esto se logra principalmente mediante el uso de herencia e interfaces. El polimorfismo permite tratar objetos de diferentes subclases como objetos de una superclase. Esto es útil en muchos escenarios, como cuando queremos escribir código que pueda funcionar con objetos de diferentes clases sin saber exactamente de qué clase son.

Por ejemplo, podemos tener un método que acepte un objeto de clase Animal y llame al método eat() en él. Este método funcionará con cualquier objeto que sea una instancia de Animal o cualquier subclase de Animal, como Dog, sin necesidad de conocer el objeto exacto. tipo de objeto.

Clases abstractas en Java

Las clases abstractas son clases de las que no se pueden crear instancias por sí mismas y están diseñadas para ser subclases. Se declaran con la palabra clave abstract. Las clases abstractas se utilizan a menudo para crear una clase base con métodos y propiedades comunes que serán compartidas por todas las subclases, pero dejando la implementación de uno o más métodos a las subclases.

Por ejemplo:


clase abstracta Forma {
    entero x, y;

    movimiento vacío (int dx, int dy) {
        x += dx;
        y += dy;
    }

    sorteo vacío abstracto();
    área doble abstracta();
}

clase Círculo extiende Forma {
    doble radio;

    sorteo vacío() {
        System.out.println("Dibujar círculo.");
    }

    área doble() {
        devolver Math.PI * radio * radio;
    }
}

La clase Forma es abstracta y no se puede crear una instancia directamente. Define un método concreto, move(), y dos métodos abstractos, draw() y area(), que deben implementarse mediante subclases. . La clase Circle es una subclase concreta de Shape y proporciona implementaciones para los métodos abstractos.

Beneficios de las clases abstractas

Las clases abstractas son muy útiles cuando queremos definir una plantilla para un grupo de subclases. Con clases abstractas, podemos:

  • Defina métodos que deben ser implementados por subclases, asegurando una interfaz consistente.
  • Implementar métodos no abstractos que las subclases puedan compartir o reutilizar.
  • Defina campos de datos que puedan ser utilizados por subclases.
  • Controle cómo se deben crear los objetos de subclase, utilizando constructores en la clase abstracta.

Las clases abstractas son una poderosa herramienta en el arsenal de un desarrollador de Java. Proporcionan una manera de establecer una relación clara entre clases relacionadas, sin dejar de aprovechar los beneficios de la herencia y el polimorfismo. Al utilizar clases abstractas, podemos crear sistemas más flexibles y fáciles de mantener, lo cual es una ventaja significativa en proyectos de software de cualquier tamaño.

En resumen, herencia y polimorfismo son conceptos fundamentales en Java que nos permiten escribir código reutilizable y sistemas más flexibles. Las clases abstractas juegan un papel crucial en esto, permitiéndonos definir estructuras de clases que sean robustas y extensibles. Al dominar estos conceptos, los desarrolladores de Java pueden crear aplicaciones potentes y eficientes que son fáciles de mantener y ampliar con el tiempo.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre clases abstractas 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: concepto de polimorfismo

Siguiente página del libro electrónico gratuito:

92Herencia y polimorfismo en Java: concepto de polimorfismo

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