Back to questions
Junior — Middle
134
Мог бы ты привести пример использования принципа Лисков в практическом коде или системе?
Companies where asked
Pashapay
Answer from AI
sobes.tech AI
Принцип подстановки Лисков (Liskov Substitution Principle) гласит, что объекты подкласса должны быть взаимозаменяемы с объектами базового класса без нарушения корректности программы.
Пример на Dart (Flutter):
abstract class Bird {
void fly();
}
class Sparrow implements Bird {
@override
void fly() {
print('Воробей летит');
}
}
class Ostrich implements Bird {
@override
void fly() {
throw Exception('Страус не умеет летать');
}
}
void makeBirdFly(Bird bird) {
bird.fly();
}
void main() {
makeBirdFly(Sparrow()); // Работает корректно
makeBirdFly(Ostrich()); // Нарушение принципа Лисков
}
В этом примере класс Ostrich нарушает принцип Лисков, так как не может корректно заменить Bird (не умеет летать). Чтобы соблюсти принцип, лучше разделить интерфейсы, например, выделить интерфейс летающих птиц.