Sobes.tech
Junior — Middle

Pode-se usar nomes de parâmetros diferentes na assinatura ao sobrescrever métodos?

sobes.tech IA

Resposta da IA

Em Swift, ao sobrescrever métodos, pode usar nomes de parâmetros diferentes na assinatura, mas é importante entender que para o compilador, os nomes externos dos parâmetros (nomes de parâmetros externos) são os que importam, não os internos (nomes de parâmetros internos).

Ao sobrescrever um método, a interface externa deve coincidir para que o método seja corretamente sobrescrito. Os nomes internos dos parâmetros podem diferir, pois são visíveis apenas dentro do corpo do método.

Exemplo:

class Parent {
    func greet(name personName: String) {
        print("Hello, \(personName)")
    }
}

class Child: Parent {
    override func greet(name friendName: String) { // o parâmetro externo "name" coincide
        print("Hi, \(friendName)")
    }
}

Aqui, o parâmetro externo name coincide, e o nome interno (personName e friendName) difere, o que é permitido.