κ΅λΉμ§μ D+58
- μλ°νλ‘κ·Έλλ°4 -
μμ
- μ½λμ μ¬νμ©μ±μ λμ΄κ³ 곡ν΅μ κ·μ½μ μ 곡νκΈ° μν κ°μ²΄μ§ν₯μ νΉμ±(μμμ±)μ λνλΈλ€.
- λΆλͺ¨ν΄λμ€λ₯Ό νμ₯νκ³ μμν΄λμ€λ₯Ό λ§λλ κΈ°λ²μ΄λ€.
- μμμ λ§λ€λμλ μ΄λμ λ λ³Όλ₯¨μ΄ μμ΄μΌ νλ©°, λ³Όλ₯¨μ΄ μλ μνλ‘ μμμ νλ€λ©΄ μ½λμ 볡μ‘λκ° μ€νλ € μ¬λΌκ°κ³ 리λλΉλ¦¬ν°κ° λ¨μ΄μ§ μ μλ€.
μμ λ©λͺ¨λ¦¬λ§΅
μμ±μμ νΈμΆ μμ
μμ κ·Έλ¦Όμ ν΅ν΄μ μμ±μμ νΈμΆμμλ₯Ό μμ보면, λΆλͺ¨ν΄λμ€μ μμ±μκ° λ¨Όμ νΈμΆλ κ² μ²λΌ 보μ΄μ§λ§ Dogμ μμ±μκ° λ¨Όμ νΈμΆμ΄ λλ€.
μ΄λ, Dogλ λ¨μν νΈμΆλ§λκ³ μ€νλμ§ μκ³ λ°λ‘ λΆλͺ¨ν΄λμ€μΈ Animalλ‘ λ€μ΄κ°μ Animalμ μμ±μκ° μ€νλκ³ λμ Dogμ μμ±μκ° κ·Έ μ΄νμ μ€νλλ€.
μ΄μ²λΌ μ°λ¦¬λ κ° μμ±μκ° νΈμΆκ³Ό μ€νμ μ°¨μ΄ μλ€λ κ²μ λͺ
νν μμμΌ ν νμκ° μλ€.
• super()
νμ ν΄λμ€μ μμ±μμμ μμ ν΄λμ€μ μμ±μλ₯Ό λͺ
μμ μΌλ‘ νΈμΆν λ μ¬μ©νλ ν€μλμ΄λ€.
μ΄λ, super()λ₯Ό μ¬μ©ν λ μ΄λ ν μ½λλ μ‘΄μ¬ν΄μλ μλλ€.(μ»΄νμΌμλ¬λ°μ)
• μμμμμ static
μμμ heap λ©λͺ¨λ¦¬μ μ리λ₯Ό μ‘κ² λλλ° λ°λ©΄ staticμ μ¬μ©νκ² λλ©΄ μ μμμμ μμΉνκ² λκΈ° λλ¬Έμ staticμ μ¬μ©νλ λ³μλ μμλ²μ μμ μμ΄λ μμμ λμμ΄ μλλ€.
κ·Έλ κΈ° λλ¬Έμ μμλ ν΄λμ€λ₯Ό κ°μ²΄νν΄μ λ³μλ λ©μλλ₯Ό λΆλ¬λΌλ κ°μ²΄λͺ μΌλ‘ λΆλ¬λ΄λ λ€λ₯Έ λ©μλμ λ³μμλ¬λ¦¬ "ν΄λμ€λͺ .staticλ³μ" λ‘ μ κ·Όν΄μΌ νλ€.
• instanceof μ°μ°μ
ν΄λΉ μΈμ€ν΄μ€κ° μ΄λ€ ν΄λμ€μ μΈμ€ν΄μ€μΈμ§λ₯Ό νμΈνλ μ°μ°μλ‘ μμ ν΄λμ€λ‘ instanceofλ₯Ό ν΄λ νμΈμ΄ κ°λ₯νλ€.
• μ€λ²λΌμ΄λ© (Overriding)
λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό μμν΄λμ€μμ μ¬μ μνμ¬ μ¬μ©νλ κΈ°λ²μ΄λ€.
μ€λ²λΌμ΄λ©μ λ©μλλ§ κ°λ₯νλ©° λ³μλ λΆκ°λ₯νλ€.
리ν΄ν, ν¨μλͺ
, νλΌλ―Έν°κ° μμ ν κ°κ² ꡬνλμ΄μΌ νλ€.
LSP (Liskov Substitution Principle)
μλ£ν Sκ° μλ£ν Tμ νμνμ΄λΌλ©΄ νμν νλ‘κ·Έλ¨μ μμ±μ λ³κ²½μμ΄ μλ£ν Tμ κ°μ²΄λ₯Ό μλ£ν Sμ κ°μ²΄λ‘ κ΅μ²΄ν μ μμ΄μΌ νλ€λ μμΉμ΄λ€.
μ¦, LSPλ λΆλͺ¨ν΄λμ€μ μ€κ³μμΉμ μμλ λ°λΌμΌνλ©° κ·Έκ²μ μ€λ²λΌμ΄λ©μ νλλΌλ μ€μλμ΄μΌ ν¨μ μλ―Ένλ€.
μΈν°νμ΄μ€
- κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μμ κ·μ½μ μ§μνκΈ° μν λ°μ΄ν°νμ μ΄λ€.
- ν΄λμ€ μ¬μ©μμκ² ν΄λμ€μ κΈ°λ₯ λͺ
μΈλ₯Ό μ 곡νλ€.
- κΈ°λ₯λͺ
μΈμ μ 곡μ μ¬μ©μμκ² ν΄λμ€λ₯Ό νΈνκ² μ¬μ©νλλ‘ νλ€.
- κΈ°λ₯λͺ
μΈμ μ 곡μ κ·Έ κΈ°λ₯μ΄ λ°λμ ꡬνλμ΄μΌ νλ μ½μ(κ·μ½)μ μ μ νλ€.
- κΈ°μ‘΄ μμμ κ°λ
μμ κ°μ μ±μ΄ μΆκ° λ κ²μ΄λ€. (μμ±νμ§ μμ κ²½μ° μ»΄νμΌ λ¨κ³μμλΆν° μλ¬λ₯Ό λ°μνλ€)
νΉμ§
- μΈν°νμ΄μ€λ΄μ λ©μλμ ꡬνλΆλ₯Ό μμ±νμ κ²½μ° λ°λμ μμ±ν΄μΌνκΈ° λλ¬Έμ publicμΌλ‘ μ€μ λμ΄μΌλ§ νλ€.
(μλ΅νμ κ²½μ°μλ publicμΌλ‘ μ€μ λμ΄μλ€.)
- μΈν°νμ΄μ€ λ΄μμ λ³μμ μΈμ λΆκ°νμ§λ§ staticμ μ¬μ©ν κ²½μ° μ μμμμ μ¬λΌκ°κΈ° λλ¬Έμ μ¬μ©κ°λ₯νλ€.
- λν staticμΌλ‘ μ μΈν λ©μλλ ꡬνκ°λ₯νλ€.
μΈν°νμ΄μ€ μμ
μλ₯Ό λ€μ΄ κΈ°μ‘΄ νλ¦°νΈμμ 컬λ¬νλ¦°νΈ κΈ°λ₯μ μΆκ°νκΈ°μν΄ κΈ°μ‘΄ μΈν°νμ΄μ€μ 컬λ¬νλ¦°νΈλ₯Ό μΆκ°νκ²λλ©΄ μ΄μ λ²μ μ μΈν°νμ΄μ€λ₯Ό μ¬μ©νκ³ μλ ν΄λμ€λ€μμ λ¬Έμ κ° λ°μνκ²λλ€.
κ·Έλ κΈ° λλ¬Έμ 컬λ¬νλ¦°νΈμμ μΆκ°λ κΈ°λ₯μ λ°λ‘ μΈν°νμ΄μ€λ₯Ό λ§λ λ€μμ κ·Έ μΈν°νμ΄μ€μ μμμΌλ‘ μ°κ²°ν΄ ꡬνμ΄ κ°λ₯νλ€.
μ¦, μꡬ쑰건μ λ³ν λ°μμ μΈν°νμ΄μ€μ μμμΌλ‘ ν΄κ²°ν μ μλ€.
λ€μ€ μΈν°νμ΄μ€
μΈν°νμ΄μ€λ νλμ ν΄λμ€μ νλλ§ μΈμ μλκ²μ΄ μλλΌ μ¬λ¬κ° μ¬μ©ν μ μλ€.
μΈν°νμ΄μ€μ instanceof μ°μ°
instanceofμ°μ°μ μ¬μ©ν΄ ν΄λΉ ν΄λμ€κ° μ΄λ€ μΈν°νμ΄μ€λ₯Ό ꡬννμλμ§ κ΅¬λ³ν μ μλ€.
(booleanννμ κ°μ λ΄λ³΄λ΄κ² λλ€)
λ§μ»€ μΈν°νμ΄μ€
λ§μ»€ μΈν°νμ΄μ€λ λΉμ΄μλ μΈν°νμ΄μ€λ‘ μλ―Έλ₯Ό μ λ¬ν΄μ£ΌκΈ°μν΄ λ§λ€μ΄μ§ κ²μΌλ‘ μ£Όμκ³Ό λΉμ·ν κ°λ
μ κ°μ§λ€.
λκΈ