Sobes.tech
Junior

Lehet-e több szülőtől örökölni struktúrát?

sobes.tech MI

Válasz az MI-től

Nem. Objective-C-ben és Swiftben a struktúrák nem támogatják a több öröklődést.

Swiftben a struktúrák jelentős képességekkel rendelkeznek, ideértve a protokollokat, kiterjesztéseket, módszereket, számított tulajdonságokat, tárolt tulajdonságokat és inicializálókat.

Azonban, a Swiftben hasonló célok eléréséhez a következők használhatók:

  • Protokollok: Meghatároznak egy követelményeket tartalmazó halmazt (módszerek, tulajdonságok, inicializálók). Egy típus (struktúra vagy osztály) megfelelhet egy vagy több protokollnak, így megszerezve azok "viselkedését".

    // Protokoll példa
    protocol Animal {
        var name: String { get }
        func makeSound()
    }
    
    // Struktúra, ami megfelel a protokollnak
    struct Dog: Animal {
        let name: String
    
        func makeSound() {
            print("Vau!")
        }
    }
    
  • Kiterjesztések: Új funkciókat adnak egy meglévő típushoz anélkül, hogy módosítanák a forráskódját.

    // Kiterjesztés példa a String típushoz
    extension String {
        func reversedWords() -> String {
            let words = self.split(separator: " ")
            return words.reversed().joined(separator: " ")
        }
    }
    
    // A kiterjesztés használata
    let sentence = "Helló világ"
    print(sentence.reversedWords()) // Kimenet: világ Helló
    

A Swift osztályok egyszerű öröklődést támogatnak egy szülőosztálytól, de több protokollt is megvalósíthatnak.