Sobes.tech
Junior — Middle

Explique a diferença entre um método que é implementado com o mesmo nome e assinatura numa classe e a sua sobrecarga, e a substituição do método em classes herdadas.

sobes.tech IA

Resposta da IA

Sobrecarga de método (overloading) é quando numa mesma classe são criados vários métodos com o mesmo nome, mas com assinaturas diferentes (conjuntos diferentes de parâmetros). Isto permite chamar o método com argumentos diferentes, e o compilador escolhe a opção adequada.

Sobrescrita de método (overriding) ocorre numa classe herdada, quando um método com a mesma assinatura que na classe base é implementado novamente para modificar ou expandir o comportamento do método base.

Exemplo em Swift:

class Animal {
    func sound() {
        print("Algum som")
    }
}

class Dog: Animal {
    override func sound() { // sobrescrita
        print("Latido")
    }

    func sound(volume: Int) { // sobrecarga
        print("Latido ao volume \(volume)")
    }
}

Aqui, sound() na classe Dog sobrescreve o método da classe base Animal, e sound(volume:) é uma sobrecarga do método com um conjunto diferente de parâmetros.