Junior — Middle
შესაძლებელია თუ არა Swift ენის ფარგლებში მრავალმხრივი მემკვიდრეობის განხორციელება?
sobes.tech AI
პასუხი AI-სგან
Swift ენის ფარგლებში მრავალმემკვიდრეობა (multiple inheritance) არ არის მხარდაჭერილი, ანუ კლასი შეიძლება მემკვიდრეობა მიიღოს მხოლოდ ერთი სუპერკლასიდან.
თუმცა, Swift მხარს უჭერს პროტოკოლებს (protocols), რომლებიც საშუალებას აძლევენ განახორციელოთ ფუნქციონალობა, რომელიც მსგავსია მრავალმემკვიდრეობის, რამდენიმე პროტოკოლის განახორციელებით.
მაგალითი:
protocol Flyable {
func fly()
}
protocol Swimmable {
func swim()
}
class Animal {
func eat() {
print("ჭამა")
}
}
class Duck: Animal, Flyable, Swimmable {
func fly() {
print("ფრენა")
}
func swim() {
print("ცურვა")
}
}
let donald = Duck()
donald.eat() // ჭამა
donald.fly() // ფრენა
donald.swim() // ცურვა
ამ გზით, ფუნქციონალობა ფართოვდება ერთი კლასის მემკვიდრეობით და რამდენიმე პროტოკოლის განახორციელებით.