Sobes.tech
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.