Junior — Middle
Poderia dar um exemplo de uso do princípio de Liskov em código ou sistema prático?
sobes.tech IA
Resposta da IA
Принцип подстановки Лисков (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 (не умеет летать). Чтобы соблюсти принцип, лучше разделить интерфейсы, например, выделить интерфейс летающих птиц.