Sobes.tech
Junior

Fale sobre a cadeia de herança de classes na linguagem de programação Swift.

sobes.tech IA

Resposta da IA

As classes em Swift suportam herança simples. Cada classe herda de uma classe pai, formando uma hierarquia. A cadeia de herança começa com uma classe base, que não herda de nada, e estende-se para baixo através das classes filhas.

Propriedades de herança:

  • Sobrescrever (Overriding): A classe filha pode sobrescrever a implementação de métodos, propriedades e subíndices da classe pai. Usa-se a palavra-chave override.
  • Prevenir sobrescritas (Preventing Overrides): Pode-se impedir a sobrescrita de um membro da classe marcando-o com a palavra-chave final. Toda a classe pode ser declarada como final.
  • Acesso à classe pai: A classe filha pode acessar os membros implementados da classe pai usando a palavra-chave super. Isto é útil para chamar a implementação de um método da classe pai ou acessar uma propriedade do pai.

Exemplo:

// Classe base
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Implementação vazia
    }
}

// Classe filha que herda de Vehicle
class Car: Vehicle {
    var numberOfDoors = 4

    // Sobrescrever o método makeNoise
    override func makeNoise() {
        print("Beep beep")
    }
}

// Classe filha que herda de Car
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Adicionar uma nova propriedade
    let isElectric = true

    // Sobrescrever a propriedade do classe base
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("Carro elétrico está em movimento")
            }
        }
    }
}

Neste exemplo:

  • Vehicle — classe base.
  • Car herda de Vehicle. Ele adiciona a propriedade numberOfDoors e sobrescreve o método makeNoise.
  • ElectricCar herda de Car. Ele adiciona a propriedade batteryLevel, a constante isElectric e sobrescreve a propriedade currentSpeed.

Cadeia de herança: Vehicle -> Car -> ElectricCar. Cada classe nesta cadeia tem acesso a todos os membros públicos (ou acessíveis em outro contexto) das classes superiores na hierarquia.