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
extendspara 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
nameheredada 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
@Overridepara indicar que estamos sobrescribiendo un método.
- En la clase
Ejercicio Práctico
Ejercicio
-
Crea una clase base llamada
Vehiclecon 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
Carque herede deVehicley 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 propiedadesmakeymodel, 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 drivingExplicación de la Solución
-
Clase
Vehicle:- Tiene las propiedades
makeymodel. - Tiene un método
start()que imprime un mensaje indicando que el vehículo está arrancando.
- Tiene las propiedades
-
Clase
Car:- Hereda de
Vehicleutilizando 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
makeymodel. - 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
