Introducció
L'herència és un concepte fonamental en la programació orientada a objectes (OOP) que permet crear noves classes a partir de classes existents. Això facilita la reutilització del codi i la creació de jerarquies de classes més organitzades i mantenibles. En Groovy, l'herència es gestiona de manera similar a altres llenguatges orientats a objectes com Java.
Conceptes Clau
- Classe Base (Superclasse): La classe de la qual s'hereten propietats i mètodes.
- Classe Derivada (Subclasse): La classe que hereta propietats i mètodes de la classe base.
extendsKeyword: Paraula clau utilitzada per indicar que una classe hereta d'una altra.
Exemples Pràctics
Definició d'una Superclasse
Definició d'una Subclasse
Utilització de la Subclasse
Dog dog = new Dog() dog.name = "Buddy" dog.eat() // Output: Buddy is eating dog.bark() // Output: Buddy is barking
Sobreescriptura de Mètodes
La sobreescriptura de mètodes permet que una subclasse proporcioni una implementació específica d'un mètode que ja està definit en la seva superclasse.
class Cat extends Animal {
@Override
void eat() {
println("${name} is eating fish")
}
}
Cat cat = new Cat()
cat.name = "Whiskers"
cat.eat() // Output: Whiskers is eating fishUtilització de super
La paraula clau super es pot utilitzar per accedir als mètodes i propietats de la superclasse des de la subclasse.
class Bird extends Animal {
@Override
void eat() {
super.eat()
println("${name} is eating seeds")
}
}
Bird bird = new Bird()
bird.name = "Tweety"
bird.eat() // Output: Tweety is eating
// Tweety is eating seedsExercicis Pràctics
Exercici 1: Crear una Jerarquia de Classes
- Crea una classe
Vehicleamb una propietatmakei un mètodestart(). - Crea una subclasse
Carque hereti deVehiclei afegeixi una propietatmodeli un mètodedrive(). - Crea una instància de
Car, assigna valors a les propietats i crida als mètodesstart()idrive().
Solució
class Vehicle {
String make
void start() {
println("${make} is starting")
}
}
class Car extends Vehicle {
String model
void drive() {
println("${make} ${model} is driving")
}
}
Car car = new Car()
car.make = "Toyota"
car.model = "Corolla"
car.start() // Output: Toyota is starting
car.drive() // Output: Toyota Corolla is drivingExercici 2: Sobreescriptura de Mètodes
- Crea una classe
Personamb una propietatnamei un mètodeintroduce(). - Crea una subclasse
Studentque hereti dePersoni sobreescrigui el mètodeintroduce()per afegir "I am a student" a la sortida. - Crea una instància de
Student, assigna un valor a la propietatnamei crida al mètodeintroduce().
Solució
class Person {
String name
void introduce() {
println("Hello, my name is ${name}")
}
}
class Student extends Person {
@Override
void introduce() {
super.introduce()
println("I am a student")
}
}
Student student = new Student()
student.name = "Alice"
student.introduce() // Output: Hello, my name is Alice
// I am a studentErrors Comuns i Consells
- Oblidar la paraula clau
extends: Assegura't d'utilitzarextendsper indicar que una classe hereta d'una altra. - No cridar al constructor de la superclasse: Si la superclasse té un constructor amb paràmetres, assegura't de cridar-lo des de la subclasse utilitzant
super(). - Confusió entre
superithis: Utilitzasuperper accedir a membres de la superclasse ithisper accedir a membres de la classe actual.
Conclusió
L'herència és una eina poderosa en la programació orientada a objectes que permet la reutilització del codi i la creació de jerarquies de classes més organitzades. En aquest tema, hem après com definir superclasses i subclasses, com sobreescriure mètodes i com utilitzar la paraula clau super. Amb aquests coneixements, estàs preparat per crear estructures de classes més complexes i eficients en Groovy.
Curs de Programació Groovy
Mòdul 1: Introducció a Groovy
Mòdul 2: Sintaxi i Característiques del Llenguatge Groovy
Mòdul 3: Programació Orientada a Objectes en Groovy
Mòdul 4: Característiques Avançades de Groovy
Mòdul 5: Groovy en la Pràctica
- Entrada/Sortida de Fitxers
- Treballant amb XML i JSON
- Accés a Bases de Dades
- Desenvolupament Web amb Groovy
Mòdul 6: Proves i Depuració
Mòdul 7: Ecosistema i Eines de Groovy
- Eina de Construcció Gradle
- Framework de Proves Spock
- Framework Grails
- Altres Llibreries i Eines de Groovy
Mòdul 8: Millors Pràctiques i Temes Avançats
- Estil de Codi i Convencions
- Optimització del Rendiment
- Consideracions de Seguretat
- Concurrència en Groovy
