Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : liskov, substitution

Что означает принцип подстановки Лисков?

Этот вопрос проверяет корректность использования наследования и понимание контрактов между базовыми и дочерними типами.

Короткий ответ

Принцип подстановки Лисков говорит о том, что объект подкласса должен полностью заменять объект базового класса без изменения поведения программы. Если код работает с базовым типом, он должен так же корректно работать и с его наследником. Подкласс не должен усиливать ограничения или нарушать ожидаемую логику. Нарушение этого принципа приводит к неожиданным багам. Фактически это правило корректного наследования.

Длинный ответ

Liskov Substitution Principle (LSP) — объекты подклассов должны быть взаимозаменяемы с объектами базового класса без изменения корректности программы.

Простыми словами

Если функция ожидает объект базового класса, она не должна «ломаться», когда получает объект наследника.

Пример нарушения

class Rectangle {
    var width: Double = 0
    var height: Double = 0
}

class Square: Rectangle {
    override var width: Double {
        didSet { height = width }
    }
}

Square нарушает ожидания Rectangle, изменяя поведение сеттеров.

Почему это проблема

  • логика становится неочевидной

  • появляются скрытые ошибки

  • полиморфизм перестаёт работать корректно

Как избегать нарушений

  1. Не усиливать предусловия

  2. Не ослаблять постусловия

  3. Не менять смысл методов базового класса

Практика в iOS

  • осторожно использовать наследование от UIKit-классов

  • предпочитать протоколы и композицию

Вывод

LSP — это индикатор правильного наследования. Если наследник нельзя безопасно подставить вместо базового класса, значит архитектурное решение выбрано неверно.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • Swift

    Swift

Ключевые слова

#liskov

#substitution

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.