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.