Nella programmazione orientata agli oggetti il principio di sostituzione di Liskov (Liskov substitution principle) è una particolare definizione di sottotipo, introdotta da Barbara Liskov e Jeannette Wing nel 1993.
La formulazione sintetica del principio è la seguente:
"Se è una proprietà che si può dimostrare essere valida per oggetti di tipo , allora deve essere valida per oggetti di tipo dove è un sottotipo di ."
Questa nozione di sottotipo è quindi basata sulla nozione di sostituibilità secondo cui, se S è un sottotipo di T, allora oggetti dichiarati in un programma di tipo T possono essere sostituiti con oggetti di tipo S senza alterare la correttezza dei risultati del programma.
Nella metodologia di programmazione chiamata progettazione per contratto (Design by contract), questo principio pone alcuni vincoli sulle modalità con cui i contratti possono interagire con l'ereditarietà:
Inoltre il principio non ammette la presenza di eccezioni più ampie nelle sottoclassi.