2022. 4. 21. 21:36γJAVA/μλ°μ μ μ
1οΈβ£ λ€νμ±(polymorphism)
κ°μ²΄μ§ν₯κ°λ μμ λ€νμ±μ΄λ 'μ¬λ¬κ°μ§ ννλ₯Ό κ°μ§ μ μλ λ₯λ ₯'μ μλ―Ένλ©°, μλ°μμλ ν νμ μ μ°Έμ‘°λ³μλ‘ νμ¬ μ¬λ¬ νμ μ κ°μ²΄λ₯Ό μ°Έμ‘°ν μ μλλ‘ ν¨μΌλ‘μ¨ λ€νμ±μ νλ‘κ·Έλ¨μ μΌλ‘ ꡬννμλ€.
-> μ‘°μν΄λμ€ νμ μ μ°Έμ‘°λ³μλ‘ μμν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°ν μ μλλ‘ νμλ€.
Tv t = new Tv();
Tv t2 = new SmartTv();
SmartTv t3 = new SmartTv();
-> Tv μ°Έμ‘° λ³μλ‘λ SmartTv μΈμ€ν΄μ€ μ€μμ Tv ν΄λμ€μ λ©€λ²λ€λ§ μ¬μ©ν μ μλ€.
λ λ€ κ°μ νμ μ μΈμ€ν΄μ€μ§λ§ μ°Έμ‘°λ³μμ νμ μ λ°λΌ μ¬μ©ν μ μλ λ©€λ²μ κ°μκ° λ¬λΌμ§λ€.
μ°Έμ‘°λ³μκ° μ¬μ©ν μ μλ λ©€λ²μ κ°μλ μΈμ€ν΄μ€μ λ©€λ² κ°μλ³΄λ€ κ°κ±°λ μ μ΄μΌ νλ€.
μ°Έμ‘°λ³μμ νμ μ΄ μ°Έμ‘°λ³μκ° μ°Έμ‘°νκ³ μλ μΈμ€ν΄μ€μμ μ¬μ©ν μ μλ λ©€λ²μ κ°μλ₯Ό κ²°μ νλ€λ μ¬μ€μ μ΄ν΄ν΄μΌ νλ€!!
μ‘°μνμ μ μ°Έμ‘°λ³μλ‘ μμνμ μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°ν μ μλ€.
λ°λλ‘ μμνμ μ μ°Έμ‘°λ³μλ‘ μ‘°μνμ μ μ°Έμ‘°λ³μλ₯Ό μ°Έμ‘°ν μλ μλ€.
2οΈβ£ μ°Έμ‘°λ³μμ νλ³ν
-> μ¬μ©ν μ μλ λ©€λ²μ κ°μλ₯Ό μ‘°μ νλ κ² , νλ³ν νλ μ΄μ κ° λ°λ‘ μ°Έμ‘°λ³μλ₯Ό λ³κ²½ν¨μΌλ‘μ¨ μ¬μ©ν μ μλ λ©€λ²μ κ°―μλ₯Ό μ‘°μ νκΈ° μν΄μμ΄λ€.
μμ νμ -> μ‘°μ νμ (Up-casting) : νλ³ν μλ΅ κ°λ₯
μ‘°μ νμ -> μμ νμ (Down-casting) : νλ³ν μλ΅ λΆκ°
μ‘°μ νμ μ μ°Έμ‘°λ³μλ₯Ό μμνμ μ μ°Έμ‘°λ³μλ‘ λ³ννλ κ²μ λ€μ΄μΊμ€ν μ΄λΌκ³ νλ©°,
μμ νμ μ μ°Έμ‘°λ³μλ₯Ό μ‘°μνμ μ μ°Έμ‘°λ³μλ‘ λ³ννλ κ²μ μ μΊμ€ν μ΄λΌκ³ νλ€.
- μ‘°μνμ μ μ°Έμ‘°λ³μλ₯Ό μμνμ μ μ°Έμ‘°λ³μμ μ μ₯ν κ²½μ° νλ³νμ μλ΅ν μ μλ€. λͺ μμ μΌλ‘ νλ³νμ ν΄μ€μΌνλ€.
νλ³νμ μ°Έμ‘°λ³μμ νμ μ λ³ννλ κ²μ΄μ§ μΈμ€ν΄μ€λ₯Ό λ³ννλ κ²μ΄ μλκΈ° λλ¬Έμ μ°Έμ‘°λ³μμ νλ³νμ μΈμ€ν΄μ€μ μλ¬΄λ° μν₯μ λ―ΈμΉμ§ μλλ€.
λ¨μ§ μ°Έμ‘°λ³μμ νλ³νμ ν΅ν΄μ, μ°Έμ‘°νκ³ μλ μΈμ€ν΄μ€μμ μ¬μ©ν μ μλ λ©€λ²λ²μλ₯Ό μ‘°μ νλ κ² λΏμ΄λ€.
-> μΊμ€νΈ μ°μ°μλ₯Ό μ¬μ©ν΄μ μ‘°μνμ μ μ°Έμ‘°λ³μλ₯Ό μμνμ μ μ°Έμ‘°λ³μλ‘ νλ³ννκ²μ΄κΈ° λλ¬Έμ λ¬Έμ κ° μμ΄λ³΄μ΄μ§λ§ μ°Έμ‘°λ³μ carκ° μ°Έμ‘°νκ³ μλ μΈμ€ν΄μ€κ° Car νμ μ μΈμ€ν΄μ€λΌλλ° μλ€.
μ 체 λ°°μ΄ κ² μ²λΌ μ‘°μνμ μ μΈμ€ν΄μ€λ₯Ό μμνμ μ μ°Έμ‘°λ³μλ‘ μ°Έμ‘°νλ κ²μ νμ©λμ§ μλλ€.
μ»΄νμΌμμλ μ°Έμ‘°λ³μκ°μ νμ λ§ μ²΄ν¬νκΈ° λλ¬Έμ μ€ν μ μμ€λ μΈμ€ν΄μ€μ νμ μ λν΄μλ μ ν μμ§ λͺ»νλ€.
κ·Έλμ μ»΄νμΌμμλ λ¬Έμ κ° μμμ§λ§ μ€νμμλ μλ¬κ° λ°μνμ¬ μ€νμ΄ λΉμ μμ μΌλ‘ μ’ λ£λ κ²μ΄λ€.
μλ‘ μμκ΄κ³μ μλ νμ κ°μ νλ³νμ μλ°©ν₯μΌλ‘ μμ λ‘κ² μνλ μ μμΌλ, μ°Έμ‘°λ³μκ° κ°λ¦¬ν€λ μΈμ€ν΄μ€μ μμνμ μΌλ‘ νλ³νμ νμ©λμ§ μλλ€.
κ·Έλμ μ°Έμ‘°λ³μκ° κ°λ¦¬ν€λ μΈμ€ν΄μ€μ νμ μ΄ λ¬΄μμΈμ§ νμΈνλ κ²μ΄ μ€μνλ€.
3οΈβ£ instanceof μ°μ°μ
μ°Έμ‘°λ³μκ° μ°Έμ‘°νκ³ μλ μΈμ€ν΄μ€μ μ€μ νμ μ μμ보기 μν΄ instanceof μ°μ°μλ₯Ό μ¬μ©νλ€.
μ£Όλ‘ μ‘°κ±΄λ¬Έμ μ¬μ©λκ³ , instanceofμ μΌμͺ½μλ μ°Έμ‘°λ³μλ₯Ό μ€λ₯Έμͺ½μλ νμ (ν΄λμ€λͺ )μ΄ νΌμ°μ°μλ‘ μμΉνλ€.
κ·Έλ¦¬κ³ μ°μ°μ κ²°κ³Όλ‘ boolean κ°μΈ trueμ false μ€μ νλλ₯Ό λ°ννλ€.
instanceofλ₯Ό μ΄μ©ν μ°μ° κ²°κ³Όλ‘ trueλ₯Ό μ»μλ€λ κ²μ μ°Έμ‘°λ³μκ° κ²μ¬ν νμ μΌλ‘ νλ³νμ΄ κ°λ₯νλ€λ κ²μ λ»νλ€.
-> μ΄λ€ νμ μ λν instaceofμ°μ°μ κ²°κ³Όκ° trueλΌλ κ²μ κ²μ¬ν νμ μΌλ‘ νλ³νμ΄ κ°λ₯νλ€λ κ²μ λ»νλ€.