Наследование, переопределение и final
Создайте базовый класс, расширьте его с помощью наследования, override методы и свойства, вызывайте super и фиксируйте поведение с помощью final .
«Наследование, переопределение и final» — бесплатный урок Swift Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 3 уроков всего.
Обзор
В Swift классы поддерживают наследование. Вы можете переопределять поведение с помощью override и вызывать реализацию родительского класса. Используйте модификатор, запрещающий дальнейшие изменения, чтобы зафиксировать поведение.
Базовый класс
Создайте класс base с методом экземпляра, который подклассы смогут переопределять.
class Animal {
var name: String
init(name: String) { self.name = name }
func speak() -> String { "..." } // to be overridden
}
let a = Animal(name: "Thing")
print(a.speak())Переопределение метода
Используйте ключевое слово override, добавляя новую реализацию в подклассе.
class Dog: Animal {
override func speak() -> String { "woof" }
}
let d = Dog(name: "Rex")
print(d.speak()) // "woof"Вызов родительской реализации
Вызовите реализацию родительского класса, чтобы повторно использовать её поведение и расширить его в подклассе.
class Cat: Animal {
override func speak() -> String {
let base = super.speak()
return base + " meow"
}
}
print(Cat(name: "Mimi").speak()) // "... meow"Переопределение и запрет изменений
Переопределяйте свойства и методы. Используйте специальный модификатор для класса или его члена, чтобы запретить дальнейшее наследование или переопределение.
class Vehicle {
var description: String { "vehicle" } // computed property
func drive() { print("move") }
}
class Car: Vehicle {
override var description: String { "car" } // override property
override func drive() { print("vroom") }
}
final class ElectricCar: Car { // cannot be subclassed
final override func drive() { print("zzzz") } // cannot be overridden further
}
let e = ElectricCar()
print(e.description)
e.drive()Примечания и советы
Примечания:
- Предпочитайте композицию глубоким иерархиям.
- Помечайте классы или их члены как неизменяемые для наследования, если не планируете расширение через подклассы.
- Всегда используйте override, заменяя поведение базового класса.
Запрет наследования
Быстрая проверка: какое ключевое слово запрещает создание подклассов и переопределение?
Итоги
Итоги: определите класс base, переопределяйте override методы и свойства в подклассах, вызывайте реализацию родительского класса для повторного использования кода и помечайте типы и члены как неизменяемые, чтобы зафиксировать поведение.
Часто задаваемые вопросы
Урок «Наследование, переопределение и final» бесплатный?
Да — полный текст урока «Наследование, переопределение и final» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 3 уроков всего.
Чему я научусь в уроке «Наследование, переопределение и final»?
Создайте базовый класс, расширьте его с помощью наследования, override методы и свойства, вызывайте super и фиксируйте поведение с помощью final . Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.
Сколько времени занимает урок «Наследование, переопределение и final»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Memberwise init и изменяющие методы
- Наследование, переопределение и final
- Управление доступом (public/internal/fileprivate/private)