Sobes.tech
Junior

É possível herdar uma estrutura de múltiplos pais?

sobes.tech IA

Resposta da IA

Não. Em Objective-C e Swift, as estruturas não suportam herança múltipla.

Em Swift, as estruturas possuem capacidades significativas, incluindo protocolos, extensões, métodos, propriedades calculadas, propriedades armazenadas e inicializadores.

No entanto, para alcançar objetivos semelhantes em Swift, usam-se:

  • Protocolos: Definem um conjunto de requisitos (métodos, propriedades, inicializadores). Um tipo (estrutura ou classe) pode conformar-se a um ou vários protocolos, adquirindo assim o seu "comportamento".

    // Exemplo de protocolo
    protocol Animal {
        var name: String { get }
        func makeSound()
    }
    
    // Estrutura que conforma ao protocolo
    struct Dog: Animal {
        let name: String
    
        func makeSound() {
            print("Au au!")
        }
    }
    
  • Extensões: Adicionam novas funções a um tipo existente sem alterar o seu código fonte.

    // Exemplo de extensão para String
    extension String {
        func reversedWords() -> String {
            let words = self.split(separator: " ")
            return words.reversed().joined(separator: " ")
        }
    }
    
    // Uso da extensão
    let sentence = "Olá mundo"
    print(sentence.reversedWords()) // Saída: mundo Olá
    

As classes em Swift suportam herança única de uma classe pai, mas podem implementar múltiplos protocolos.