Изучаю подходы к SOLID принципам.
Не могу понять, на нормальном примере, что такое принцип подстановки Liskov. Я его понял так, если ваша конструкция использует определенные типы данных, то эта же конструкция должна так же свободно работать с производными от исходного типа, типами. Или я как то не правильно понимаю, подскажите с примером. Можно ли увидеть самый простой пример из возможных, который иллюстрирует этот принцип
Функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом.
Давайте рассмотрим пример на c#:
public class Bird
{
public void Fly() { }
}
public class Duck : Bird { }
Утка может летать, потому что она является птицей. Но что, если есть еще один класс:
public class Ostrich : Bird { }
Страус - это птица, но она не может летать. Ostrich
подкласс Bird
- однако не может использовать метод Fly
, что означает нарушение LSP.
public class Bird { }
public class FlyingBirds : Bird
{
public void Fly() { }
}
public class Duck : FlyingBirds { }
public class Ostrich : Bird { }
вольный перевод ответа @MaysaraAlhindi
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок