Liskov Substitution Principle (LSP) ले भन्छ कि subtype को objects तिनीहरूको base type को लागि substitutable हुनु पर्छ प्रोग्रामको सही होस् विनष्ट नगरी। यदि कोड Base सँग काम गर्छ, यो कुनै पनि Subclass सँग काम गर्नु पर्छ — एउटै व्यवहार सम्भाव्यता, कुनै आश्चर्य छैन।
canonical violation: 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() == ;
}
