λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

λͺ©λ‘μ΄ μ—†μŠ΅λ‹ˆλ‹€.

[객체지ν–₯] λ‹€ν˜•μ„±

πŸ—£ Language/JAVA
    λ°˜μ‘ν˜•



    λ‹€ν˜•μ„±( Polymorphism )


    λ‹€ν˜•μ„±?

    λ‹€ν˜•μ„±μ΄ 뭘까?


    λ‹€ν˜•μ„±μ€ μƒλ¬Όν•™μ—μ„œλ„ μ •μ˜κ°€ λ˜μ–΄ μžˆμ§€λ§Œ,

    μš°λ¦¬λŠ” ITλΆ„μ•Όμ΄λ―€λ‘œ 컴퓨터 κ³Όν•™μ—μ„œ μ •μ˜λœ λ‚΄μš©μ„ λ³΄μž



    κ·Έ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ μžλ£Œν˜• μ²΄κ³„μ˜ μ„±μ§ˆμ„ λ‚˜νƒ€λ‚΄λŠ” κ²ƒμœΌλ‘œ, 
    ν”„λ‘œκ·Έλž¨ μ–Έμ–΄μ˜ 각 μš”μ†Œλ“€(μƒμˆ˜λ³€μˆ˜μ‹μ˜€λΈŒμ νŠΈν•¨μˆ˜λ©”μ†Œλ“œ λ“±)이 
    λ‹€μ–‘ν•œ μžλ£Œν˜•(type)에 μ†ν•˜λŠ” 것이 ν—ˆκ°€λ˜λŠ” μ„±μ§ˆμ„ 가리킨닀.


    λ„ˆλ¬΄ μ–΄λ ΅κ²Œ μ •μ˜λ˜μ–΄μžˆλŠ”λ°

    μ‰½κ²Œ λ§ν•΄μ„œ ν•˜λ‚˜μ˜ μ΄λ¦„μœΌλ‘œ μ—¬λŸ¬ κΈ°λŠ₯을 ν•˜λŠ”κ²ƒμ΄ λ°”λ‘œ λ‹€ν˜•μ„±μ΄λ‹€.



    μ΄λŠ” 객체지ν–₯ μ–Έμ–΄μ—μ„œ 빠질 수 μ—†λŠ” κ°œλ…μœΌλ‘œ

    상속, μΊ‘μŠν™”μ™€ ν•¨κ»˜ 3λŒ€ νŠΉμ§• 쀑 ν•˜λ‚˜ 이닀.





    λ‹€ν˜•μ„±μ΄ 적용된 곳을 μžλ°”(JAVA)둜 예λ₯Ό λ“€μ–΄ 보면

    μ˜€λ²„λΌμ΄λ”©(Overriding)κ³Ό μ˜€λ²„λ‘œλ”©(Overloading)은

    μ–΄λŠ 객체지ν–₯ μ–Έμ–΄λ“  μ‘΄μž¬ν•  것이고,


    μžλ°”μ—λŠ” μ½”λ“œμ˜ 애맀함을 ν”Όν•˜κΈ° μœ„ν•΄

    닀쀑상속을 μ§€μ›ν•˜μ§€ μ•Šκ³ 

    μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν†΅ν•΄μ„œ 일뢀뢄 μ§€μ›ν•˜κ³  μžˆλŠ”λ°


    이 μΈν„°νŽ˜μ΄μŠ€λ„ λ‹€ν˜•μ„±μ΄ 적용된 것이고,

    μΈν„°νŽ˜μ΄μŠ€μ™€ λ”λΆˆμ–΄ μΆ”μƒν΄λž˜μŠ€ λ˜ν•œ λ‹€ν˜•μ„±μ΄ 적용된 것쀑 ν•˜λ‚˜λ‹€.





    λ‹€ν˜•μ„± μš”μ•½


    μ •μ˜ : ν•˜λ‚˜μ˜ μ΄λ¦„μœΌλ‘œ μ—¬λŸ¬ κΈ°λŠ₯을 ν•˜λŠ”κ²ƒ




    적용된 κ³³ (JAVA / μžλ°”) 


    1) μ˜€λ²„λΌμ΄λ”© (Overriding)


    2) μ˜€λ²„λ‘œλ”© (Overloading)


    3) μΆ”μƒν΄λž˜μŠ€ (Abstract Class)


    4) μΈν„°νŽ˜μ΄μŠ€ (Interface)




    μ΄μƒμœΌλ‘œ 객체지ν–₯의 3λŒ€ νŠΉμ§• 쀑 ν•˜λ‚˜μΈ

     λ‹€ν˜•μ„±μ— λŒ€ν•΄ κ°„λ‹¨ν•˜κ²Œ μ •λ¦¬ν–ˆλ‹€.

    λ°˜μ‘ν˜•