Junior — Middle
Ar įmanoma Swift kalboje įgyvendinti daugiavaldystę?
sobes.tech AI
Atsakymas iš AI
Swift kalboje nėra palaikomas daugiavaikis paveldėjimas, tai yra, klasė gali paveldėti tik iš vieno tėvinės klasės.
Tačiau Swift palaiko protokolus (protocols), kurie leidžia įgyvendinti funkcionalumą, panašų į daugiavaikį paveldėjimą, įgyvendinant kelis protokolus.
Pavyzdys:
protocol Flyable {
func fly()
}
protocol Swimmable {
func swim()
}
class Animal {
func eat() {
print("Valgo")
}
}
class Duck: Animal, Flyable, Swimmable {
func fly() {
print("Skraido")
}
func swim() {
print("Plaukia")
}
}
let donald = Duck()
donald.eat() // Valgo
donald.fly() // Skraido
donald.swim() // Plaukia
Šiuo būdu funkcionalumas plečiasi naudojant vienos klasės paveldėjimą ir kelių protokolų įgyvendinimą.