Objective-C эквивалент "переопределения" в С#

Предположим, что у класса Vehicle есть метод под названием "StartEngine" , а в моем подклассе под названием "Самолет" я хочу переопределить "StartEngine" . Если я использую С#, я должен использовать ключевое слово "переопределить" в объявлении/определении метода самолечения StartEngine.

Причина, по которой я спрашиваю, заключается в том, что если вместо "StartEngine" я набираю "startengine", С# будет жаловаться, но Objective-C не будет, благодаря этому ключевому слову.

Ответы

Ответ 1

Все методы класса и экземпляра в Objective-C отправляются динамически и могут быть переопределены в подклассах. Нет ничего похожего на ключевое слово С# override или его ключевое слово virtual.

Ответ 2

Да, это определенно возможно. Там нет ключевого слова переопределения. Просто объявите функцию с идентичной сигнатурой в вашем подклассе, и она будет вызываться вместо версии суперкласса.

Вот какой способ запуска AirPane startEngine может выглядеть следующим образом:

- (void)startEngine
{
    // custom code

    // call through to parent class implementation, if you want
    [super startEngine];
}

Ответ 3

Все методы из Objective-C являются переопределяемыми, вы просто пишете метод для той же сигнатуры.