0Pricing
Swift Academy · Урок

Наследование классов и ключевое слово super

Научитесь создавать подклассы, вызывать super.init() и расширять поведение суперкласса.

«Наследование классов и ключевое слово super» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.

Добро пожаловать

Классы поддерживают наследование — подкласс может расширять или специализировать суперкласс. Это позволяет повторно использовать код и реализовывать полиморфизм — ключевые основы объектно-ориентированного проектирования.

Определение подкласса

```swift class Animal { var name: String init(name: String) { self.name = name } func speak() { print("...") } } class Dog: Animal { func fetch() { print("\(name) fetches!") } } let d = Dog(name: "Rex") d.speak() // "..." d.fetch() // "Rex fetches!" ```

super.init() — обязательный вызов

```swift class Vehicle { var speed: Double init(speed: Double) { self.speed = speed } } class Car: Vehicle { var brand: String init(brand: String, speed: Double) { self.brand = brand super.init(speed: speed) // must call super } } ```

Двухэтапная инициализация

Правила двухэтапной инициализации в Swift: 1. Все *собственные* хранимые свойства должны быть установлены *до* вызова `super.init()` 2. После `super.init()` можно настраивать унаследованные свойства Это не позволяет использовать неинициализированную память.

Вызов методов родительского класса

```swift class Shape { func draw() { print("Drawing shape") } } class Circle: Shape { override func draw() { super.draw() // call parent implementation print("Drawing circle") } } ```

Наследование свойств

Подклассы наследуют все свойства суперкласса: ```swift class Person { var name: String = "" var age: Int = 0 } class Employee: Person { var company: String = "" } let e = Employee() e.name = "Alice" e.company = "Acme" ```

Основные и вспомогательные инициализаторы

• *Основной* — полностью инициализирует все свойства; вызывает `super.init()` • *Вспомогательный* — делегирует инициализацию другому инициализатору с помощью `self.init()` ```swift convenience init(name: String) { self.init(name: name, age: 0) // delegates to designated } ```

Обязательный инициализатор

Пометьте инициализатор как `required`, чтобы обязать все подклассы реализовать его: ```swift class Base { required init(id: Int) { ... } } class Sub: Base { required init(id: Int) { super.init(id: id) } } ``` Это часто используется, когда фабричному методу нужно создавать экземпляры через протокол.

Иерархия классов и тип

```swift let a: Animal = Dog(name:"Buddy") print(a is Dog) // true print(a is Animal) // true ``` `Dog` IS-A `Animal` — экземпляры подкласса соответствуют требованиям типа суперкласса.

Одиночное наследование

Классы Swift поддерживают только *одиночное* наследование — один суперкласс. Однако класс может соответствовать множеству протоколов: ```swift class MyVC: UIViewController, UITableViewDelegate, UITableViewDataSource { } ``` Протоколы — это механизм Swift для множественного наследования поведения.

Быстрая проверка

Когда в основном инициализаторе подкласса необходимо вызвать `super.init()`?

Повторение

Основные выводы: • Создавайте подкласс с помощью `class Sub: Super` • Вызывайте `super.init()` после установки собственных свойств • Двухэтапная инициализация: сначала собственные свойства, затем суперкласс • `super.method()` вызывает реализацию родительского класса • В Swift используется одиночное наследование; для нескольких вариантов поведения применяйте протоколы Далее: `override`, `final` и предотвращение наследования.

Часто задаваемые вопросы

Урок «Наследование классов и ключевое слово super» бесплатный?

Да — полный текст урока «Наследование классов и ключевое слово super» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.

Чему я научусь в уроке «Наследование классов и ключевое слово super»?

Научитесь создавать подклассы, вызывать super.init() и расширять поведение суперкласса. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Наследование классов и ключевое слово super»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Наследование классов и ключевое слово super
  2. override, final и запрет наследования
  3. Приведение типов: is, as?, as! и as
  4. Деинциализаторы и жизненный цикл памяти
← Назад к Swift Academy