Бесплатный онлайн-курс по основам программирования - Super Init

Ключевое слово "super" в языке программирования Objective-C используется для обращения к родительскому классу. Инициализация объекта в Objective-C осуществляется путем вызова конструктора класса (метода инициализации).

Когда мы вызываем super init, мы передаем управление конструктору родительского класса для выполнения его инициализации. Это особенно важно при наследовании классов, когда мы хотим наследовать свойства и методы родительского класса и добавить свою собственную логику.

Пример кода:


// Родительский класс
@interface ParentClass : NSObject
@property (nonatomic, strong) NSString *name;
-(instancetype)initWithName:(NSString *)name;
@end
@implementation ParentClass
-(instancetype)initWithName:(NSString *)name {
    self = [super init];
    if (self) {
        self.name = name;
    }
    return self;
}
@end
// Подкласс
@interface ChildClass : ParentClass
@property (nonatomic, assign) NSInteger age;
-(instancetype)initWithName:(NSString *)name andAge:(NSInteger)age;
@end
@implementation ChildClass
-(instancetype)initWithName:(NSString *)name andAge:(NSInteger)age {
    self = [super initWithName:name];
    if (self) {
        self.age = age;
    }
    return self;
}
@end
// Использование подкласса
ChildClass *child = [[ChildClass alloc]initWithName:@"Jack" andAge:10];
NSLog(@"%@ is %ld years old", child.name, (long)child.age);

В этом примере у нас есть родительский класс ParentClass и его подкласс ChildClass. В родительском классе есть свойство name, которое мы инициализируем с помощью метода initWithName. В подклассе мы добавляем свойство age и создаем соответствующий метод инициализации initWithName:andAge:.

Мы вызываем super initWithName: в методе инициализации подкласса ChildClass, чтобы передать управление методу инициализации родительского класса. Затем мы инициализируем свойство age и возвращаем созданный экземпляр объекта.

Когда мы используем подкласс ChildClass и передаем значения параметров в метод инициализации initWithName:andAge:, родительская инициализация также выполняется, и в итоге мы получаем созданный объект с обоими свойствами name и age.

Описание super init может быть расширено, но в основном это ключевое слово используется для вызова инициализации родительского класса. Использование super init является стандартным способом создания наследуемых объектов классов в Objective-C.

Похожие вопросы на: "super init "

Merge Sort: Understanding the Algorithm and its Advantages
Узнать цвет пикселя на картинке
Метрики в Scikit-learn: как оценить качество модели
Ошибка: Visual Studio не удается скачать установочные файлы
Расстояние между строками в CSS: как настроить интервал между текстовыми строками
Конвертирование PNG в Base64 онлайн
Pygame Draw: создание графических элементов с помощью Pygame
<h1>Java - язык программирования с богатым функционалом и широкими возможностями
Как удалить каталог в Linux через терминал
Putchar - функция для вывода символа на экран