Liskov Substitution Principle (LSP) phát biểu rằng các object của một subtype phải có thể thay thế cho base type của chúng mà không phá vỡ tính đúng đắn của chương trình. Nếu code làm việc với một Base, nó phải làm việc được với bất kỳ Subclass nào — cùng kỳ vọng về hành vi, không bất ngờ.
