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.
extends
Keyword: 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 fish
Utilització 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 seeds
Exercicis Pràctics
Exercici 1: Crear una Jerarquia de Classes
- Crea una classe
Vehicle
amb una propietatmake
i un mètodestart()
. - Crea una subclasse
Car
que hereti deVehicle
i afegeixi una propietatmodel
i 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 driving
Exercici 2: Sobreescriptura de Mètodes
- Crea una classe
Person
amb una propietatname
i un mètodeintroduce()
. - Crea una subclasse
Student
que hereti dePerson
i sobreescrigui el mètodeintroduce()
per afegir "I am a student" a la sortida. - Crea una instància de
Student
, assigna un valor a la propietatname
i 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 student
Errors Comuns i Consells
- Oblidar la paraula clau
extends
: Assegura't d'utilitzarextends
per 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
super
ithis
: Utilitzasuper
per accedir a membres de la superclasse ithis
per 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