หลักการแทนที่ของลิสคอฟ (LSP) ระบุว่าวัตถุของประเภทย่อยจะต้องสามารถแทนที่พิมพ์พื้นฐานของมันได้ โดยไม่ทำให้ความถูกต้องของโปรแกรมเสียหาย หากโค้ดทำงานกับ Base ก็ต้องทำงานกับ Subclass ใด ๆ — ความคาดหวังด้านลักษณะการทำงานเดียวกัน ไม่มีสิ่งที่ไม่คาดคิด
การละเมิดตามแบบแผน: Square extends Rectangle
{
w, h;
{ .w = w; }
{ .h = h; }
{ w * h; }
}
{
{ .w = w; .h = w; }
{ .w = h; .h = h; }
}
{
r.setWidth();
r.setHeight();
r.area() == ;
}
