Ответ
Да, Swift поддерживает наследование классов. Это механизм, при котором один класс (подкласс, child class) может наследовать свойства, методы и другие характеристики другого класса (суперкласса, parent class).
Базовый пример:
class Vehicle { // Суперкласс
var currentSpeed = 0.0
func makeSound() {
print("Some generic vehicle sound")
}
}
class Bicycle: Vehicle { // Подкласс
var hasBasket = false
}
let bike = Bicycle()
bike.currentSpeed = 15.0 // Свойство унаследовано от Vehicle
bike.makeSound() // Метод унаследован от Vehicle
Ключевые особенности наследования в Swift:
- Одиночное наследование: Класс может наследоваться только от одного суперкласса.
- Переопределение: Подкласс может предоставить свою собственную реализацию метода, свойства, инициализатора или сабскрипта суперкласса, используя ключевое слово
override.class Train: Vehicle { override func makeSound() { print("Choo Choo!") } } - Запрет наследования: Ключевое слово
finalпредотвращает переопределение метода/свойства или наследование от всего класса.final class FinalClass { } // Этот класс не может иметь подклассов - Только для классов: Структуры (
struct) и перечисления (enum) не поддерживают наследование.
Ответ 18+ 🔞
А, ну ты про наследование в Swift спрашиваешь! Ну, поддерживает, блядь, конечно поддерживает, не идиотский же язык в конце концов. Это ж как в жизни: папаша что-то накопил — сынок получает по наследству, только без судов и распиздяйства с документами.
Вот смотри, как это просто, ёпта:
class Vehicle { // Это типа папаша, суперкласс, блядь
var currentSpeed = 0.0
func makeSound() {
print("Some generic vehicle sound") // Ну типа «бррр» какое-то общее
}
}
class Bicycle: Vehicle { // А это сынок-велосипед. Двоеточие — и всё, ты уже наследник, получил всё папино
var hasBasket = false // И своё корыто прикупил
}
let bike = Bicycle()
bike.currentSpeed = 15.0 // Смотри-ка, на папиной тачке гоняет! Унаследовал, блядь.
bike.makeSound() // И сигналит папиным гудком!
А теперь главные фишки, чтобы не облажаться:
-
Один папа на всех: Как в природе, блядь. Не может же человек быть сыном сразу и Ивана, и Петра, и Сидора. Так и класс — наследуется только от одного суперкласса. Многодетность — это уже про протоколы, но это другая история, нахуй.
-
Переопределение — это сила, но и ответственность, блядь. Не нравится, как папаша делает — сделай по-своему, но предупреди всех словом
override. А то мало ли.class Train: Vehicle { override func makeSound() { // Всё, старый гудок в пизду! print("Choo Choo!") // Теперь будет «Ту-тууу!», как у порядочного паровоза! } } -
Запретить наследство — святое право. Вдруг ты создал шедевр, а какой-то распиздяй его унаследует и всё просрёт? Поставь
finalи спи спокойно, ебать.final class FinalClass { } // Этот класс — неприступная крепость. Наследников не будет. Точка. -
А вот это важно, блядь, запомни как «Отче наш»: Наследование — только для классов (
class). Структуры (struct) и перечисления (enum) — они сами по себе ударники, индивидуалисты, хуле. Не поддерживают эту семейную тягомотину. Хочешь повторно использовать код — там другие приёмы, композиция например.
Короче, наследуй на здоровье, но без фанатизма. А то наследуешься, переопределишь всё подряд, а потом сидишь и думаешь: «И чё я, блядь, наваял?».