0. πΆλ€μ΄κ°λ©°
λ€νμ±μ λν΄ κ³΅λΆνλ€κ° μ½κ² μ΄ν΄κ° λμ§ μλ λΆλΆμ΄ μκ²Όκ³ μ΄μ λν΄ μκ² λ μ μ λν΄ κΈμ μμ±ν΄λ³΄κ² μ΅λλ€.
1. λ¬Έμ βββ
λ¬Έμ μν©μ λ€μκ³Ό κ°μ΅λλ€.
λ€νμ±μ μ΄μ©ν λ λΆλͺ¨ ν΄λμ€μ μ°Έμ‘° λ³μμ μμ μΈμ€ν΄μ€λ₯Ό ν λΉν΄μ€ κ²½μ° μ μ΄ μ°Έμ‘° λ³μκ° μμ ν΄λμ€λ§ κ°μ§κ³ μλ λ©μλλ μ¬μ©νμ§ λͺ»νλμ λν λ¬Όμμ΄ μκ²Όμ΅λλ€. μ’ λ μμΈν μν© μ€λͺ μ μν΄ μλ μ½λλ₯Ό 첨λΆν΄λ³΄κ² μ΅λλ€.
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.childMethod(); // μ»΄νμΌ μλ¬κ° λλ λΆλΆ
}
}
class Parent {} // λΆλͺ¨ ν΄λμ€
class Child extends Parent { // μμ ν΄λμ€
public void childMethod(){
System.out.println("Hi I'm Child!");
}
}
μ μ½λμ λν΄ μλ°μ μ΅μνμ λΆλ€μ μ»΄νμΌ μλ¬κ° λλ κ²μ΄ λΉμ°νλ€κ³ μκ°ν μ μκ² μ§λ§ μ΄λ₯Ό μ²μλ³΄κ³ μ κ° λ μκ°μ λ€μκ³Ό κ°μ΅λλ€.
- μ°Έμ‘° λ³μκ° κ°μ§κ³ μλ μ 보λ ν μμμ μμ±λ μΈμ€ν΄μ€μ μ°Έμ‘°κ°μ΄λ€.
- pκ° κ°λ¦¬ν€κ³ μλ μΈμ€ν΄μ€λ Child μΈμ€ν΄μ€μ΄λ€.
- λ°λΌμ p.childMethod()λ₯Ό νλ©΄ pμ λ΄κΈ΄ μ°Έμ‘°κ°μ λ°λΌκ°μ λ°κ²¬ν Child μΈμ€ν΄μ€μ childMethod() λ©μλλ₯Ό μ°Ύμ νΈμΆνλ©΄ λλ€.
μμ κ°μ λ‘μ§μΌλ‘ μλνλ€λ©΄ p.childMethod()κ° μλ¬κ° λ μ΄μ κ° μλ€κ³ μκ°νλ κ² κ°μ΅λλ€. μλ°μ κΈ°λ³Έμμμλ λΆλͺ¨ μ°Έμ‘° λ³μμ ν λΉνλ€λ©΄ λΆλͺ¨ ν΄λμ€μμ μ μν λ©€λ²λ λ©μλλ§ μ¬μ©ν μ μκ³ μμ λ©μλλ₯Ό μ¬μ©νλ €λ©΄ νλ³νμ ν΄μΌνλ€. λΌκ³ λμ μμ§λ§ μ΄ μ λ³΄λ§ κ°μ§κ³ λ μ κ° μκ°ν λΆλΆμμ μ΄λ€ λΆλΆμ΄ μλͺ»λ μκ°μΈμ§ νμ νκΈ°κ° μ΄λ €μ μ΅λλ€.
2. ν΄κ²° π
μ»΄νμΌ νμμ pμ νμ μ Parent μ λλ€. μ»΄νμΌλ¬λ pμ ν λΉλ μΈμ€ν΄μ€κ° λ°νμμ μ΄λ€ κ°μ κ°μ§ κ²μΈμ§μ λν κ³ λ €λ νμ§ μμΌλ©° μ€μ§ μ μΈν νμ (Parent)μ λν μ 보λ§μ κ³ λ €νκ² λ©λλ€.
λ°λΌμ p.childMethod()λΌλ μ½λλ₯Ό μ»΄νμΌν λ pμ contextμμ, μ¦ typeμΈ Parentμ κ΄ν΄μ childMethodλΌλ μ 보λ₯Ό μ°Ύκ² λ©λλ€. λ§μ½ Parentμ childMethod μ λ³΄κ° μλ€λ©΄ μμ κ΄κ³μΈ ν΄λμ€λ€μμ μ΄λ₯Ό μ°Ύκ² λ©λλ€. Parent κ°μ κ²½μ° λͺ μμ μΌλ‘ μμλ°μ ν΄λμ€κ° μμΌλ―λ‘ Object ν΄λμ€μμ μ°Ύμλ³Ό κ²μ λλ€. κ±°κΈ°μλ λΉμ°ν μκ² μ£ ,,
λ°λ‘ μ΄ μμ μμ μ»΄νμΌλ¬λ μ»΄νμΌ μλ¬λ₯Ό λμ Έλ²λ¦¬κ² λ©λλ€. μλλ λ¬Έμ μ½λλ₯Ό μ€ν μν¨ κ²½μ° μλ¬ λ©μΈμ§μ λλ€.
μλ¬ λ©μΈμ§λ₯Ό λ΄λ childMethodλΌλ ν¨μλ₯Ό μ°Ύμ§ λͺ»νμμ μ μ μλ€μ,, μμ μλ¬λ μκ³ λ³΄λ©΄ μ°Έ μΉμ νκ² μ€λͺ ν΄μ£Όκ³ μμλ€λ μ¬μ€μ κΉ¨λ«κ² λ©λλ€.
μ¦, μ€μ λ°νμμ pκ° κ°λ¦¬ν€κ³ μλ μΈμ€ν΄μ€μ childMethod μ 무μ λν΄μλ μ»΄νμΌ νμμ κ³ λ € λμμ΄ μλλΌλ κ² μ λλ€. μ»΄νμΌ νμμλ νμ μ λν μ λ³΄λ§ κ°μ§κ³ childMethodλ₯Ό bind ν μ μμ΄μΌ ν©λλ€. νμ§λ§ μμμ λ΄€λ κ²μ²λΌ Parent ν΄λμ€μ λν μ 보λ§μ κ°μ§κ³ λ childMethodλ₯Ό bind ν μ μμ£ ..
μΆκ°λ‘ λ°νμμ κ²°μ νλ κ²μ λ¨μ μ΄λ€ λ©μλμ ꡬνμ μ¬μ©ν κ²μ΄λ μ λλ€. λ§μ½ μλμ κ°μ μ½λκ° μλ€κ³ κ°μ ν΄ λ΄ μλ€.
@Override // μμν΄λμ€μμμ toString λ©μλ
public String toString(){
return "I'm Child!!!"
}
μμ κ°μ κ²½μ° p.toString()μ μ¬μ©νμ¬λ toString λ©μλκ° Object ν΄λμ€μμ μ°Ύμμ§κ³ λ°λΌμ toStringμ pμ bind ν μ μμ΅λλ€. μ»΄νμΌλ¬λ μ΄λ₯Ό ν΅ν΄ λ©μλ νΈμΆμ΄ valid νꡬλ! μ λλ₯Ό νμ νκ² λ©λλ€. κ·Έ ν λ°νμμμ μ¬μ©νλ κ²μ Child ν΄λμ€μμ μ€λ²λΌμ΄λ©ν toStringμ΄ λκ² μ΅λλ€!
μ§κΈμμ κΈμ λ€μ μ½μ΄λ³΄λ μ΄ λΆλΆμ΄ λ°λ‘ λ€μ΄λλ―Ή λ©μλ λμ€ν¨μΉμ κ΄ν λΆλΆμ΄μκ΅°μ! ν΄λΉ λΆλΆμ΄ κΆκΈνμλ€λ©΄ μλ μμμ μ°Έκ³ νμλ©΄ μ’μ κ² κ°μ΅λλ€! (2022.09.05)
μ 리ν΄λ³΄λ©΄ μ κ° νλ μ€ν΄λ μ»΄νμΌ νμμμ νλ μΌκ³Ό λ°νμμμ νλ μΌμ μ°¨μ΄μ μ ꡬλΆνμ§ λͺ»ν΄ μκΈ΄ κ²μ΄μμ΅λλ€.
3. λκ°λ©°π
μ»΄νμΌλ¬ 곡λΆν΄λ³΄κ³ μΆλ€,,
'Java & Kotlin' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] ArrayListλ μ΄λ»κ² ν¬κΈ°κ° κ°λ³μ μΌκΉ? (2) | 2022.02.23 |
---|---|
[Java] Garbage Collection(GC)μ λνμ¬. (0) | 2022.02.16 |
[Java] JVMμ λνμ¬. (0) | 2022.02.15 |
[Java]βοΈλ§μ»€ μΈν°νμ΄μ€μ λνμ¬. (1) | 2022.02.12 |
[Java] public static void main(String[] args)μ λνμ¬ (0) | 2022.02.09 |