Introducció
L'herència és un concepte fonamental en la programació orientada a objectes (OOP) que permet crear una nova classe basada en una classe existent. La nova classe hereta les propietats i mètodes de la classe existent, la qual es coneix com a classe base o superclasse. La nova classe es coneix com a subclasse o classe derivada.
Conceptes Clau
- Superclasse (Classe Base): La classe de la qual s'hereten propietats i mètodes.
- Subclasse (Classe Derivada): La classe que hereta propietats i mètodes de la superclasse.
- Herència Simple: Swift només permet l'herència simple, és a dir, una subclasse només pot heretar d'una única superclasse.
- Override: La subclasse pot sobreescriure mètodes i propietats de la superclasse per proporcionar una implementació específica.
Sintaxi Bàsica
Definició d'una Superclasse
class Vehicle {
var currentSpeed = 0.0
func describe() -> String {
return "Traveling at \(currentSpeed) miles per hour"
}
}Definició d'una Subclasse
Utilització de la Subclasse
let bike = Bicycle() bike.currentSpeed = 15.0 bike.hasBasket = true print(bike.describe()) // Output: Traveling at 15.0 miles per hour
Sobreescriptura de Mètodes
La subclasse pot sobreescriure mètodes de la superclasse per proporcionar una implementació específica. Per fer-ho, es fa servir la paraula clau override.
Exemple de Sobreescriptura
class Car: Vehicle {
var gear = 1
override func describe() -> String {
return super.describe() + " in gear \(gear)"
}
}Utilització de la Subclasse amb Sobreescriptura
let car = Car() car.currentSpeed = 50.0 car.gear = 3 print(car.describe()) // Output: Traveling at 50.0 miles per hour in gear 3
Propietats Heretades
Les subclasses hereten totes les propietats de la superclasse i poden afegir-ne de noves.
Exemple amb Propietats Heretades
class Train: Vehicle {
var numberOfCarriages = 0
override func describe() -> String {
return super.describe() + " with \(numberOfCarriages) carriages"
}
}
let train = Train()
train.currentSpeed = 100.0
train.numberOfCarriages = 12
print(train.describe()) // Output: Traveling at 100.0 miles per hour with 12 carriagesExercicis Pràctics
Exercici 1: Crear una Subclasse
- Defineix una superclasse anomenada
Animalamb una propietatnamei un mètodemakeSound(). - Crea una subclasse anomenada
Dogque hereti deAnimali sobreescrigui el mètodemakeSound()per imprimir "Woof!".
Solució
class Animal {
var name: String
init(name: String) {
self.name = name
}
func makeSound() {
print("Some generic sound")
}
}
class Dog: Animal {
override func makeSound() {
print("Woof!")
}
}
let dog = Dog(name: "Buddy")
dog.makeSound() // Output: Woof!Exercici 2: Afegir Propietats a la Subclasse
- Afegeix una propietat
breeda la subclasseDog. - Modifica el mètode
makeSound()per incloure la raça del gos en la sortida.
Solució
class Dog: Animal {
var breed: String
init(name: String, breed: String) {
self.breed = breed
super.init(name: name)
}
override func makeSound() {
print("\(name) the \(breed) says Woof!")
}
}
let dog = Dog(name: "Buddy", breed: "Golden Retriever")
dog.makeSound() // Output: Buddy the Golden Retriever says Woof!Conclusió
L'herència és una eina poderosa en Swift que permet reutilitzar codi i crear jerarquies de classes. Comprendre com definir subclasses, sobreescriure mètodes i afegir noves propietats és essencial per escriure codi orientat a objectes de manera eficient. Amb aquests coneixements, estàs preparat per explorar conceptes més avançats com el polimorfisme i els protocols.
Curs de Programació en Swift
Mòdul 1: Introducció a Swift
- Introducció a Swift
- Configuració de l'Entorn de Desenvolupament
- El Teu Primer Programa en Swift
- Sintaxi i Estructura Bàsica
- Variables i Constants
- Tipus de Dades
Mòdul 2: Flux de Control
Mòdul 3: Funcions i Closures
- Definició i Crida de Funcions
- Paràmetres de Funció i Valors de Retorn
- Closures
- Funcions d'Ordre Superior
Mòdul 4: Programació Orientada a Objectes
Mòdul 5: Swift Avançat
Mòdul 6: Swift i Desenvolupament iOS
- Introducció al Desenvolupament iOS
- Conceptes Bàsics de UIKit
- Storyboards i Interface Builder
- Xarxes en Swift
- Core Data
- Conceptes Bàsics de SwiftUI
