25λ 1νμ°¨ μ μ²κΈ° μ€κΈ° μνμ λμ¨ λ¬Έμ β¦ ν λλ νμ νκ³ νμλλ° κ°μ±μ 볡μ μνΈμμ μ¬λλ€μ΄ μ΄λΆλκ² ν λ‘ νκ³ μκΈΈλ μ ννκ² μ΄ν΄νκΈ° μν΄ μμ보μλ€.
μλ°μμ μμ±μ νΈμΆ μ μ€λ²λΌμ΄λ© λ©μλκ° μ΄λ»κ² μλνλμ§μ λν΄μλ μκ³ μμμ§λ§ μ²μ λ£λ μ©μ΄μΈ λμ λμ€ν¨μΉ κ°λ μ μμ보μ
super()κ° μμμ μΌλ‘ μ€ν λ 건 μκ² λλ°, μμ ν΄λμ€ μμ±μκ° μλ£λκΈ° μ΄μ μμ μ΄λ λΆλͺ¨ ν΄λμ€μ λ©μλμ μ κ·Όνλκ² λ§μ§ μλλ?
μμ보μ.
"μ€λ²λΌμ΄λ©λ μΈμ€ν΄μ€ λ©μλλ₯Ό νΈμΆν λ, μ€μ κ°μ²΄μ νμ μ κΈ°μ€μΌλ‘ λ°νμμ κ²°μ νλ κ²
class Parent {
Parent() {
System.out.println("Parent constructor");
show(); // β λμ λμ€ν¨μΉλ‘ Child.show() νΈμΆλ¨
}
void show() {
System.out.println("Parent show");
}
}
class Child extends Parent {
int x = 10;
Child() {
System.out.println("Child constructor");
}
@Override
void show() {
System.out.println("Child show, x = " + x); // xλ μμ§ 0μΌ μλ μμ!
}
}
Parent p = new Child();
p.show(); // μ΄κ±΄ λ°νμμ Childμ show()κ° νΈμΆλ¨
μ΄λ° κ² λ°λ‘ λμ λμ€ν¨μΉ(Dynamic Dispatch)