Здравствуйте, SV., Вы писали:
SV.>LSP затрагивает публичный интерфейс, если я правильно помню.
LSP затрагивает не столько публичный интерфейс иерархии классов, сколько внешние методы с ней работающие. Именно они должны работать корректно с любым потомком. Если метод принимает на вход Printer, он должен точно так же корректно работать если ему передали ColorPrinter или MatrixPrinter.