[{"data":1,"prerenderedAt":257},["ShallowReactive",2],{"term-l\u002Fliskov-substitution":3,"related-l\u002Fliskov-substitution":243},{"id":4,"title":5,"acronym":6,"body":7,"category":224,"description":225,"difficulty":226,"extension":227,"letter":228,"meta":229,"navigation":230,"path":231,"related":232,"seo":237,"sitemap":238,"stem":241,"subcategory":6,"__hash__":242},"terms\u002Fterms\u002Fl\u002Fliskov-substitution.md","Liskov Substitution",null,{"type":8,"value":9,"toc":218},"minimark",[10,15,19,23,26,30,207,211,214],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"Liskov Substitution says if class B extends class A, you should be able to swap B in everywhere A is used without anything breaking. If your 'Electric Car' extends 'Car' but crashes when you call 'fillTank()', you've broken this rule.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"The Liskov Substitution Principle states that objects of a subtype must be substitutable for objects of their base type without altering program correctness. Violations often manifest as subclass methods that throw exceptions, do nothing, or return unexpected results.",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Violation: Square inheriting Rectangle breaks LSP\nclass Rectangle {\n  setWidth(w: number) { this.width = w; }\n  setHeight(h: number) { this.height = h; }\n}\nclass Square extends Rectangle {\n  setWidth(w: number) { this.width = this.height = w; } \u002F\u002F breaks Rectangle contract\n}\n","typescript","",[38,39,40,49,64,109,142,148,163,202],"code",{"__ignoreMap":36},[41,42,45],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"sHwdD","\u002F\u002F Violation: Square inheriting Rectangle breaks LSP\n",[41,50,52,56,60],{"class":43,"line":51},2,[41,53,55],{"class":54},"spNyl","class",[41,57,59],{"class":58},"sBMFI"," Rectangle",[41,61,63],{"class":62},"sMK4o"," {\n",[41,65,67,71,74,78,81,84,87,90,93,97,100,103,106],{"class":43,"line":66},3,[41,68,70],{"class":69},"swJcz","  setWidth",[41,72,73],{"class":62},"(",[41,75,77],{"class":76},"sHdIc","w",[41,79,80],{"class":62},":",[41,82,83],{"class":58}," number",[41,85,86],{"class":62},")",[41,88,89],{"class":62}," {",[41,91,92],{"class":62}," this.",[41,94,96],{"class":95},"sTEyZ","width",[41,98,99],{"class":62}," =",[41,101,102],{"class":95}," w",[41,104,105],{"class":62},";",[41,107,108],{"class":62}," }\n",[41,110,112,115,117,120,122,124,126,128,130,133,135,138,140],{"class":43,"line":111},4,[41,113,114],{"class":69},"  setHeight",[41,116,73],{"class":62},[41,118,119],{"class":76},"h",[41,121,80],{"class":62},[41,123,83],{"class":58},[41,125,86],{"class":62},[41,127,89],{"class":62},[41,129,92],{"class":62},[41,131,132],{"class":95},"height",[41,134,99],{"class":62},[41,136,137],{"class":95}," h",[41,139,105],{"class":62},[41,141,108],{"class":62},[41,143,145],{"class":43,"line":144},5,[41,146,147],{"class":62},"}\n",[41,149,151,153,156,159,161],{"class":43,"line":150},6,[41,152,55],{"class":54},[41,154,155],{"class":58}," Square",[41,157,158],{"class":54}," extends",[41,160,59],{"class":58},[41,162,63],{"class":62},[41,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,199],{"class":43,"line":165},7,[41,167,70],{"class":69},[41,169,73],{"class":62},[41,171,77],{"class":76},[41,173,80],{"class":62},[41,175,83],{"class":58},[41,177,86],{"class":62},[41,179,89],{"class":62},[41,181,92],{"class":62},[41,183,96],{"class":95},[41,185,99],{"class":62},[41,187,92],{"class":62},[41,189,132],{"class":95},[41,191,99],{"class":62},[41,193,102],{"class":95},[41,195,105],{"class":62},[41,197,198],{"class":62}," }",[41,200,201],{"class":47}," \u002F\u002F breaks Rectangle contract\n",[41,203,205],{"class":43,"line":204},8,[41,206,147],{"class":62},[11,208,210],{"id":209},"when-youll-hear-this","When You'll Hear This",[16,212,213],{},"\"This inheritance hierarchy violates Liskov Substitution.\" \u002F \"If you need to check the subtype before calling a method, LSP is broken.\"",[215,216,217],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":51,"depth":51,"links":219},[220,221,222,223],{"id":13,"depth":51,"text":14},{"id":21,"depth":51,"text":22},{"id":28,"depth":51,"text":29},{"id":209,"depth":51,"text":210},"architecture","Liskov Substitution says if class B extends class A, you should be able to swap B in everywhere A is used without anything breaking.","intermediate","md","l",{},true,"\u002Fterms\u002Fl\u002Fliskov-substitution",[233,234,235,236],"SOLID","Inheritance","Polymorphism","Open-Closed",{"title":5,"description":225},{"changefreq":239,"priority":240},"weekly",0.7,"terms\u002Fl\u002Fliskov-substitution","LEu2JPyUBSfiL2PojE0_mcczt5cR7MNt8MdufbewVJU",[244,248,251,254],{"title":234,"path":245,"acronym":6,"category":224,"difficulty":246,"description":247},"\u002Fterms\u002Fi\u002Finheritance","beginner","Inheritance lets a class take on all the properties and behaviors of another class.",{"title":236,"path":249,"acronym":6,"category":224,"difficulty":226,"description":250},"\u002Fterms\u002Fo\u002Fopen-closed","Open-Closed means your code should be open for adding new features but closed for editing old working code.",{"title":235,"path":252,"acronym":6,"category":224,"difficulty":226,"description":253},"\u002Fterms\u002Fp\u002Fpolymorphism","Polymorphism means the same method call can do different things depending on which object it's called on. Call 'speak()' on a Dog and you get a bark.",{"title":233,"path":255,"acronym":233,"category":224,"difficulty":226,"description":256},"\u002Fterms\u002Fs\u002Fsolid","SOLID is five rules for writing code that doesn't turn into a nightmare over time. Each letter stands for a different rule.",1776518292460]