Junior
Birden fazla ebeveynden yapı mirası alınabilir mi?
sobes.tech yapay zeka
AI'dan gelen yanıt
Hayır. Objective-C ve Swift'te yapılar çoklu kalıtımı desteklemez.
Swift'te yapılar önemli özelliklere sahiptir, bunlar arasında protokoller, genişletmeler, yöntemler, hesaplanan özellikler, saklanan özellikler ve başlatıcılar bulunur.
Ancak, Swift'te benzer amaçlara ulaşmak için şu kullanılır:
-
Protokoller: Bir dizi gereksinimi (yöntemler, özellikler, başlatıcılar) tanımlar. Bir tür (yapı veya sınıf) bir veya birkaç protokole uygun olabilir ve böylece onların "davranışını" kazanır.
// Protokol örneği protocol Animal { var name: String { get } func makeSound() } // Protokole uygun yapı struct Dog: Animal { let name: String func makeSound() { print("Hav hav!") } } -
Genişletmeler (Extensions): Mevcut türe yeni fonksiyonlar ekler, kaynak kodunu değiştirmeden.
// String için genişletme örneği extension String { func reversedWords() -> String { let words = self.split(separator: " ") return words.reversed().joined(separator: " ") } } // Genişletmenin kullanımı let sentence = "Merhaba dünya" print(sentence.reversedWords()) // Çıktı: dünya Merhaba
Swift'teki sınıflar tek kalıtımı destekler, ancak çoklu protokol uygulayabilirler.