مبدأ Liskov Substitution Principle (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() == ;
}
