--- id: P-REINFORCE-AI-LSP category: "10_Wiki/πŸ’‘ Topics/AI" confidence_score: 0.99 tags: [SoftwareEngineering, SOLID, LSP, OOP] last_reinforced: 2026-04-20 --- # [[Liskov-Substitution-Principle]] (λ¦¬μŠ€μ½”ν”„ μΉ˜ν™˜ 원칙) ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "μžμ‹μ€ μ–Έμ œλ“  λΆ€λͺ¨μ˜ 자리λ₯Ό μ™„λ²½ν•˜κ²Œ λŒ€μ‹ ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€." μžμ‹ ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ 클래슀의 κΈ°μ‘΄ κΈ°λŠ₯을 κΉ¨λœ¨λ¦¬μ§€ μ•Šκ³  ν™•μž₯ν•΄μ•Ό ν•˜λ©°, λΆ€λͺ¨λ₯Ό μ‚¬μš©ν•˜λŠ” μ½”λ“œλŠ” μžμ‹μ΄ λˆ„κ΅°μ§€ λͺ°λΌλ„ 아무 문제 없이 μž‘λ™ν•΄μ•Ό ν•œλ‹€λŠ” 원칙이닀. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **The Rule**: ν”„λ‘œκ·Έλž¨μ˜ 객체 $S$κ°€ $T$의 ν•˜μœ„ νƒ€μž…μ΄λΌλ©΄, ν”„λ‘œκ·Έλž¨μ˜ 속성 λ³€κ²½ 없이 $T$ νƒ€μž…μ˜ 객체λ₯Ό $S$ νƒ€μž…μ˜ 객체둜 μΉ˜ν™˜ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. - **Classic Counter-example**: **Square-Rectangle Problem**. - μ •μ‚¬κ°ν˜•(Square)은 μ§μ‚¬κ°ν˜•(Rectangle)의 μΌμ’…μ΄μ§€λ§Œ, κ°€λ‘œ/μ„Έλ‘œλ₯Ό λ…λ¦½μ μœΌλ‘œ λ°”κΎΈλŠ” μ§μ‚¬κ°ν˜•μ˜ λ©”μ„œλ“œλ₯Ό 상속받아 κ°•μ œλ‘œ κ°€λ‘œ=μ„Έλ‘œλ‘œ 고정해버리면, λΆ€λͺ¨μ˜ 행동 κ·œμ•½μ„ 깨뜨리게 λ˜μ–΄ LSP μœ„λ°˜μ΄λ‹€. - **Key Message**: '상속'은 λ‹¨μˆœνžˆ μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•˜λŠ” μˆ˜λ‹¨μ΄ μ•„λ‹ˆλΌ, λΆ€λͺ¨ ν΄λž˜μŠ€κ°€ 외뢀와 맺은 '계약(Behavioral Contract)'을 μΆ©μ‹€νžˆ 이행할 λ•Œλ§Œ μ •λ‹Ήν™”λœλ‹€. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (RL Update) - LSPλ₯Ό μ–΅μ§€λ‘œ μ§€ν‚€λ €λ‹€ 보면 상속 ꡬ쑰가 λ³΅μž‘ν•΄μ§€κ±°λ‚˜ 좔상화 단계가 λ„ˆλ¬΄ λ§Žμ•„μ§ˆ 수 μžˆλ‹€. ν˜„λŒ€ μ†Œν”„νŠΈμ›¨μ–΄ 곡학은 '상속(Inheritance)'λ³΄λ‹€λŠ” **'μ‘°ν•©(Composition)'**을 ꢌμž₯ν•˜λ©°, 상속을 μ“Έ λ•ŒλŠ” μΈν„°νŽ˜μ΄μŠ€λ‚˜ 좔상 클래슀λ₯Ό 톡해 μ΅œμ†Œν•œμ˜ 행동 κ·œμΉ™λ§Œ μ •μ˜ν•˜λŠ” λ°©μ‹μœΌλ‘œ LSP 리슀크λ₯Ό νšŒν”Όν•œλ‹€. ## πŸ”— 지식 μ—°κ²° (Graph) - Related: SOLID-Principles , Composition-over-Inheritance - Concept: Type-Safety