La herencia es un concepto fundamental en la programación orientada a objetos (OOP) que permite a una clase derivar propiedades y comportamientos de otra clase. En Groovy, la herencia se utiliza para promover la reutilización del código y establecer relaciones jerárquicas entre clases.
Conceptos Clave
- Clase Base (Superclase): La clase de la cual se heredan propiedades y métodos.
- Clase Derivada (Subclase): La clase que hereda propiedades y métodos de la clase base.
- Palabra Clave
extends
: Utilizada para indicar que una clase está heredando de otra.
Ejemplo Básico de Herencia
Vamos a crear un ejemplo simple para ilustrar cómo funciona la herencia en Groovy.
Clase Base: Animal
Clase Derivada: Dog
Uso de las Clases
def dog = new Dog() dog.name = "Buddy" dog.eat() // Output: Buddy is eating dog.bark() // Output: Buddy is barking
Explicación del Código
-
Clase
Animal
:- Tiene una propiedad
name
. - Tiene un método
eat()
que imprime un mensaje indicando que el animal está comiendo.
- Tiene una propiedad
-
Clase
Dog
:- Utiliza la palabra clave
extends
para heredar deAnimal
. - Añade un nuevo método
bark()
que imprime un mensaje indicando que el perro está ladrando.
- Utiliza la palabra clave
-
Uso de las Clases:
- Creamos una instancia de
Dog
. - Asignamos un valor a la propiedad
name
heredada deAnimal
. - Llamamos a los métodos
eat()
ybark()
.
- Creamos una instancia de
Sobrescritura de Métodos
La sobrescritura de métodos permite a una subclase proporcionar una implementación específica de un método que ya está definido en su superclase.
Ejemplo de Sobrescritura
class Animal { String name void eat() { println("${name} is eating") } } class Dog extends Animal { @Override void eat() { println("${name} is eating dog food") } }
Uso de las Clases con Sobrescritura
Explicación del Código
- Sobrescritura del Método
eat()
:- En la clase
Dog
, sobrescribimos el métodoeat()
de la claseAnimal
. - Utilizamos la anotación
@Override
para indicar que estamos sobrescribiendo un método.
- En la clase
Ejercicio Práctico
Ejercicio
-
Crea una clase base llamada
Vehicle
con las siguientes propiedades y métodos:- Propiedad
make
(marca del vehículo). - Propiedad
model
(modelo del vehículo). - Método
start()
que imprime un mensaje indicando que el vehículo está arrancando.
- Propiedad
-
Crea una clase derivada llamada
Car
que herede deVehicle
y añade:- Método
drive()
que imprime un mensaje indicando que el coche está conduciendo.
- Método
-
Crea una instancia de
Car
, asigna valores a las propiedadesmake
ymodel
, y llama a los métodosstart()
ydrive()
.
Solución
class Vehicle { String make String model void start() { println("${make} ${model} is starting") } } class Car extends Vehicle { void drive() { println("${make} ${model} is driving") } } def car = new Car() car.make = "Toyota" car.model = "Corolla" car.start() // Output: Toyota Corolla is starting car.drive() // Output: Toyota Corolla is driving
Explicación de la Solución
-
Clase
Vehicle
:- Tiene las propiedades
make
ymodel
. - Tiene un método
start()
que imprime un mensaje indicando que el vehículo está arrancando.
- Tiene las propiedades
-
Clase
Car
:- Hereda de
Vehicle
utilizando la palabra claveextends
. - Añade un método
drive()
que imprime un mensaje indicando que el coche está conduciendo.
- Hereda de
-
Uso de las Clases:
- Creamos una instancia de
Car
. - Asignamos valores a las propiedades
make
ymodel
. - Llamamos a los métodos
start()
ydrive()
.
- Creamos una instancia de
Conclusión
En esta sección, hemos aprendido sobre la herencia en Groovy, cómo crear clases base y derivadas, y cómo sobrescribir métodos. La herencia es una herramienta poderosa en la programación orientada a objetos que permite la reutilización del código y la creación de jerarquías de clases. En el próximo tema, exploraremos las interfaces y traits en Groovy, que proporcionan otra forma de compartir comportamientos entre clases.
Curso de Programación Groovy
Módulo 1: Introducción a Groovy
Módulo 2: Sintaxis de Groovy y Características del Lenguaje
Módulo 3: Programación Orientada a Objetos en Groovy
Módulo 4: Características Avanzadas de Groovy
Módulo 5: Groovy en la Práctica
- Entrada/Salida de Archivos
- Trabajando con XML y JSON
- Acceso a Bases de Datos
- Desarrollo Web con Groovy
Módulo 6: Pruebas y Depuración
Módulo 7: Ecosistema y Herramientas de Groovy
- Herramienta de Construcción Gradle
- Framework de Pruebas Spock
- Framework Grails
- Otras Bibliotecas y Herramientas de Groovy
Módulo 8: Mejores Prácticas y Temas Avanzados
- Estilo de Código y Convenciones
- Optimización del Rendimiento
- Consideraciones de Seguridad
- Concurrencia en Groovy