Переопределение метода

Переопределение метода является функцией языка, в которой класс может обеспечить реализацию метода, который уже предоставлен одним из его родительских классов. Реализация в этом классе замены (т.е. переопределения) реализация в родительском классе.

При определении метода с помощью того же имени как тот из родительского класса что новый метод заменяет наследованное определение. Новый метод должен иметь тот же тип возврата и взять то же число и тип параметров как метод, Вы являетесь переопределяющими. Вот пример:

@interface MyClass : NSObject {
}
- (int)myNumber;
@end
 
@implementation MyClass : NSObject {
}
- (int)myNumber {
    return 1;
}
@end
 
@interface MySubclass : MyClass {
}
- (int)myNumber;
@end
 
@implementation MySubclass
- (int)myNumber {
    return 2;
}
@end

Если Вы создаете экземпляр MyClass и отправьте ему a myNumber сообщение, это возвращается 1. Если Вы создаете экземпляр MySubclass и отправьте ему a myNumber сообщение, это возвращается 2.

Заметьте, что метод подкласса должен иметь то же имя и список параметров как переопределенный метод суперкласса.

В дополнение к завершенной замене существующей реализации Вы могли бы хотеть расширить реализацию суперкласса. Чтобы сделать это, можно вызвать реализацию суперкласса с помощью super ключевое слово.

В определении метода, super относится к родительскому классу (суперкласс) текущего объекта. Вы отправляете сообщение в super выполнить реализацию суперкласса метода. Вы часто делаете это в новой реализации того же метода для расширения его функциональности. В следующем примере, реализации myNumber MySubclass просто добавляет 1 к любому значению, возвращается реализацией MyClass.

@implementation MySubclass
- (int)myNumber {
    int subclassNumber = [super myNumber] + 1;
    return subclassNumber;
}
@end

Необходимые как условие статьи

    (Ни один)

Похожие статьи

    (Ни один)