Принципы в C# - часть 4. Принцип подстановки Лискова
Принцип замещения Лисков, созданный Барбарой Лисков и Жаннет Винг, гласит:
Вы должны иметь возможность использовать любой производный класс вместо родительского класса и вести себя таким же образом без изменений.
Другими словами, каждый производный класс должен поддерживать поведение родительского класса наряду с новым поведением, уникальным для дочернего класса. Создание новых классов, наследуемых от родительского класса, работает без каких-либо изменений в существующем коде.
 
static void Main()
{
    Apple orange = new Orange();
    Console.WriteLine(orange.GetColor());
    // outputs: "Orange";
}
public class Apple
{
    public string GetColor() => "Red";
}
public class Orange
{
    public string GetColor() => "Orange";
}
Давайте реализуем принцип подстановки Лисков:
 
static void Main()
{
    Fruit orange = new Orange();
    Console.WriteLine(orange.GetColor());
    // outputs: "Orange"
    Fruit apple = new Apple();
    Console.WriteLine(apple.GetColor());
    // outputs: "Red"
    Orange fruit = new Apple();
    Console.WriteLine(fruit.GetColor());
    // outputs: "Red"
}
public abstract class Fruit
{
    public abstract string GetColor();
}
public class Apple: Fruit
{
    public override string GetColor() => "Red";
}
public class Orange: Fruit
{
    public override string GetColor() => "Orange";
}
Здесь замена Лискова удовлетворяется нашим кодом. Приложение не нужно изменять для поддержки нового Fruit, поскольку подтипы (Apple и Orange), которые унаследованы от типа Fruit, могут быть заменены друг другом без возникновения ошибок.
                                
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.