[TIL] λ€νμ±
π OOPμ 4λ νΉμ§
ππ» λ€νμ± Polymorphism
- νλμ νμ λ³μλ‘ μ¬λ¬ κ°μ²΄λ₯Ό μ°Έμ‘° ν μ μμ
- μμν΄λμ€ νμ μ μ°Έμ‘°λ³μλ‘ νμν΄λμ€ κ°μ²΄λ₯Ό μ°Έμ‘°
- νλμ κ°μ²΄κ° μ¬λ¬ κ°μ§ ννλ₯Ό κ°μ§ μ μλ κ²
- μ½λ μ€λ³΅μ μ€μ¬ νΈλ¦¬νκ³ ν¨κ³Όμ μΌλ‘ νλ‘κ·Έλλ° κ°λ₯
- Poly : μ¬λ¬ κ°
- morphism : νν / μ€μ²΄
- μ°Έμ‘°λ³μκ° μ¬μ©ν μ μλ λ©€λ²μ κ°μλ μ€μ κ°μ²΄μ λ©€λ² κ°μλ³΄λ€ κ°κ±°λ μ μ΄μΌ ν¨
- μμ ν΄λμ€μ μ°Έμ‘° λ³μλ‘ νμ ν΄λμ€μ κ°μ²΄λ₯Ό μ°Έμ‘°νλ κ² ( Friendκ° GirFriendλ₯Ό μ°Έμ‘°νλ κ°λ )
- λ©μλ μ€λ²λΌμ΄λ© λ° μ€λ²λ‘λ©λ λ€νμ±μ μ
π μ°Έμ‘°λ³μμ νμ λ³ν
- κΈ°λ³Έ μλ£νμ νλ³ν μ²λΌ μ°Έμ‘° λ³μλ νμ λ³ν κ°λ₯ ! → μ¬μ©ν μ μλ λ©€λ²μ κ°μ μ‘°μ
- μμκ΄κ³κ° μλ μλ°©ν₯μΌλ‘ μμ λ‘κ² μνλ¨
π‘ νμ λ³νμ μν 쑰건
(1) μλ‘ μμκ΄κ³μ μλ 'μμ ν΄λμ€ - νμ ν΄λμ€' μ¬μ΄μλ§ νμ λ³νμ΄ κ°λ₯ν¨
(2) μ μΊμ€ν : νμ ν΄λμ€ νμ → μμ ν΄λμ€ νμ λ³ν : κ΄νΈ(μ°μ°μ) μλ΅ κ°λ₯
(3) λ€μ΄ μΊμ€ν : μμ ν΄λμ€ νμ → νμ ν΄λμ€ νμ λ³ν : κ΄νΈ(μ°μ°μ) λ°λμ λͺ μ
< μμ : λμ νΈ >
< νμ : λΉ΅, μΌμ΄ν¬ >
Cake cake = new Cake();
Dessert dessert = (Dessert) cake; //νμ ν΄λμ€λ₯Ό μμ ν΄λμ€ Dessert νμ
μΌλ‘ λ³ν
Cake cake2 = (Cake) dessert; //μμ ν΄λμ€κ° λ κ²μ λ€μ νμ ν΄λμ€μΈ Cake νμ
μΌλ‘ λ³ν
π instanceof μ°μ°μ
- μ°Έμ‘°λ³μμ νμ λ³νμ΄ κ°λ₯νμ§ μ¬λΆλ₯Ό boolean νμ μΌλ‘ νμΈ κ°λ₯
( μ½κ² 보μλ©΄, λ€μ μλ κ²μ΄ μμ μλ κ²μ λμ ν μ μλμ§λ₯Ό νλ¨ )
- μΊμ€ν μ΄ κ°λ₯νλ€ = νμ λ³νμ΄ κ°λ₯νλ€
→ κ°μ²΄κ° μ΄λ€ μμμλ‘ λ§λ€μ΄μ‘λμ§ & ν΄λμ€ μ¬μ΄ μμκ΄κ³κ° μ‘΄μ¬νλμ§
- μ΄λ¬ν μ 보λ₯Ό νμΈ ν μ μλλ‘ ν΄μ£Όλ μ°μ°μ
μ°Έμ‘°λ³μ instanceof νμ
ex) dessert instanceof Object; → true
dessert instanceof Dessert; → true
cake instanceof dessert; → true
bread instanceof dessert; → true
cake instanceof bread; → false
ππ» κ²°κ³Ό κ°μ΄ true μ΄λ©΄ μ°Έμ‘° λ³μκ° κ²μ¬ν νμ μΌλ‘ νμ λ³ν κ°λ₯
ππ» κ²°κ³Ό κ°μ΄ false λ©΄ μ°Έμ‘° λ³μ νμ λ³ν λΆκ°λ₯
π‘ Object ν΄λμ€
- λͺ¨λ μλ° ν΄λμ€μ μ΅μμ ν΄λμ€λ‘ νλ€μμ ' java.lang.Objcet '
π± toString( ) λ©μλ
- μ΄λ€ κ°μ²΄μ μ 보λ₯Ό λ¬Έμμ΄ ννλ‘ ννν΄μΌν λ νΈμΆνλ λ©μλ
- κ°μ²΄μ μ 보λ₯Ό String νμΌλ‘ νλ³ν ν΄μ€
- toStringμ μ€λ²λΌμ΄λ© νμ§ μμΌλ©΄ κ°μ²΄μ ν΄μμ½λκ° μΆλ ₯λ¨