πŸ“˜ INTRO

25λ…„ 1회차 μ •μ²˜κΈ° μ‹€κΈ° μ‹œν—˜μ— λ‚˜μ˜¨ λ¬Έμ œβ€¦ ν’€ λ•ŒλŠ” ν™•μ‹ ν•˜κ³  ν’€μ—ˆλŠ”λ° 가채점 볡원 μ‹œνŠΈμ—μ„œ μ‚¬λžŒλ“€μ΄ μ—΄λΆˆλ‚˜κ²Œ ν† λ‘ ν•˜κ³  있길래 μ •ν™•ν•˜κ²Œ μ΄ν•΄ν•˜κΈ° μœ„ν•΄ μ•Œμ•„λ³΄μ•˜λ‹€.

μžλ°”μ—μ„œ μƒμ„±μž 호좜 μ‹œ μ˜€λ²„λΌμ΄λ”© λ©”μ„œλ“œκ°€ μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€μ— λŒ€ν•΄μ„œλŠ” μ•Œκ³  μžˆμ—ˆμ§€λ§Œ 처음 λ“£λŠ” μš©μ–΄μΈ 동적 λ””μŠ€νŒ¨μΉ˜ κ°œλ…μ„ μ•Œμ•„λ³΄μž


🀯 μ‚¬λžŒλ“€μ΄ 막 μ‹Έμš΄λ‹€.

πŸ’¬ 논점

super()κ°€ μ•”μ‹œμ μœΌλ‘œ μ‹€ν–‰ 된 건 μ•Œκ² λŠ”λ°, μžμ‹ 클래슀 μƒμ„±μžκ°€ μ™„λ£Œλ˜κΈ° 이전 μ‹œμ μ΄λ‹ˆ λΆ€λͺ¨ 클래슀의 λ©”μ†Œλ“œμ— μ ‘κ·Όν•˜λŠ”κ²Œ λ§žμ§€ μ•ŠλŠλƒ?

μ•Œμ•„λ³΄μž.


βœ… Dynamic Dispatch?

"μ˜€λ²„λΌμ΄λ”©λœ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ, μ‹€μ œ 객체의 νƒ€μž…μ„ κΈ°μ€€μœΌλ‘œ λŸ°νƒ€μž„μ— κ²°μ •ν•˜λŠ” 것

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)


πŸ€” 근데 그럼 μƒμ„±μž μ•ˆμ—μ„œλ„ 동적 λ””μŠ€νŒ¨μΉ˜μž„?