Sobes.tech
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) отличается — это допустимо.