НовоеAI-конструктор резюме: правишь прямо на листе A4, а нейросеть подсказывает, что усилитьКонструктор резюме на листе A4Попробовать
JobPath
Начать бесплатно

FrontendJuniorТехнический

Что такое принцип подстановки Лисков (Liskov Substitution Principle)

Встречался на собеседовании

  • Верме

Ответ

Что хотят услышать интервьюеры

Интервьюеры ожидают, что кандидат продемонстрирует понимание принципа подстановки Лисков (Liskov Substitution Principle, LSP), его значения в объектно-ориентированном программировании и примеры его применения. Важно, чтобы кандидат мог объяснить, как этот принцип способствует созданию гибкого и поддерживаемого кода, а также как нарушения LSP могут привести к проблемам в проекте.

Определение

Принцип подстановки Лисков (LSP) — это принцип объектно-ориентированного программирования, который утверждает, что объекты подклассов должны быть взаимозаменяемы с объектами суперкласса без изменения корректности программы. Этот принцип помогает обеспечить, что наследование работает как ожидается и что подклассы действительно расширяют функциональность суперкласса.

Пример

Рассмотрим класс Bird и его подклассы Sparrow и Penguin. Если Bird имеет метод fly(), то все подклассы должны корректно реализовывать этот метод.

class Bird:
    def fly(self):
        return "I can fly!"

class Sparrow(Bird):
    pass

class Penguin(Bird):
    def fly(self):
        raise Exception("Penguins can't fly!")

def let_bird_fly(bird: Bird):
    print(bird.fly())

# Применение
let_bird_fly(Sparrow())  # Работает корректно
let_bird_fly(Penguin())  # Вызывает ошибку, нарушая LSP

В этом примере, если мы попытаемся заменить Bird на Penguin, программа перестанет работать корректно, что и есть нарушение принципа подстановки Лисков.

Вывод

Соблюдение LSP способствует гибкости и расширяемости кода, позволяя избежать неожиданного поведения при использовании подклассов.

Ответ помог?
Тренироваться бесплатно

Связаться с поддержкой

Выбери, где удобнее написать