Back to questions
Junior — Middle
71
Можно ли при переопределении методов использовать разные имена параметров в сигнатуре?
Answer from AI
sobes.tech AI
В Swift при переопределении методов можно использовать разные имена параметров в сигнатуре, но важно понимать, что для компилятора значимы внешние имена параметров (external parameter names), а не внутренние (internal parameter names).
При переопределении метода внешний интерфейс должен совпадать, чтобы метод корректно переопределялся. Внутренние имена параметров могут отличаться, так как они видны только внутри тела метода.
Пример:
class Parent {
func greet(name personName: String) {
print("Hello, \(personName)")
}
}
class Child: Parent {
override func greet(name friendName: String) { // внешний параметр "name" совпадает
print("Hi, \(friendName)")
}
}
Здесь внешний параметр name совпадает, а внутреннее имя (personName и friendName) отличается — это допустимо.