Search
Duplicate
πŸ˜€

10. 상속

νƒœκ·Έ

상속

β€’
μƒˆλ‘œμš΄ ν΄λž˜μŠ€κ°€ ν•„μš”ν•œ μƒν™©μ—μ„œ, 곡톡적인 νŠΉμ§•μ„ 가진 ν΄λž˜μŠ€κ°€ 이미 μ‘΄μž¬ν•˜λŠ” 경우
β—¦
μ‘΄μž¬ν•˜λŠ” 클래슀λ₯Ό μƒμ†ν•˜μ—¬ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜λ‹€
β—¦
상속받은 μžμ‹ ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œ, λ³€μˆ˜λ₯Ό μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.
β—¦
λΆ€λͺ¨ ν΄λž˜μŠ€μ™€ μžμ‹ ν΄λž˜μŠ€λŠ” is a ~ 관계λ₯Ό 가지고 μžˆμ–΄μ•Ό ν•œλ‹€. ex) λ ˆμ΄μ € ν”„λ¦°ν„°λŠ” ν”„λ¦°ν„°
β€’
상속은 λΆ€λͺ¨λ‘œλΆ€ν„° 물렀받은 곡톡적인 νŠΉμ§• + μžμ‹ ν΄λž˜μŠ€μ—μ„œλ§Œ κ°€μ§€λŠ” 좔가적인 νŠΉμ§•μ˜ ꡬ쑰
β€’
λΆ€λͺ¨μ˜ κΈ°λŠ₯을 ν™•μž₯ν–ˆλ‹€λŠ” 의미의 extends μ˜ˆμ•½μ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ 상속을 ν‘œν˜„ν•œλ‹€.

단일 상속

β€’
ν•˜λ‚˜μ˜ 클래슨느 였직 ν•˜λ‚˜μ˜ λΆ€λͺ¨ 클래슀만 상속할 수 있음
β€’
λ‹€μ€‘μƒμ†μ˜ 경우 μ€‘λ³΅λ˜λŠ” λ³€μˆ˜μ™€ λ©”μ„œλ“œκ°€ μƒμ†λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμ–΄ μžλ°”μ—μ„œλŠ” λ¬Έλ²•μ μœΌλ‘œ λ‹¨μΌμƒμ†λ§Œμ„ ν—ˆμš©ν•œλ‹€.

상속과 μƒμ„±μž

β€’
μžλ°”μ—μ„œλŠ” μžμ‹ 클래슀λ₯Ό 생성할 λ•Œ μƒμ†λœ λΆ€λͺ¨ 클래슀 객체가 μƒμ„±λ˜κ³ , λΆ€λͺ¨ 클래슀의 μƒμ„±μžλ„ μžλ™μœΌλ‘œ ν˜ΈμΆœλ˜μ–΄ μˆ˜ν–‰λ˜λ©΄μ„œ 객체 μ΄ˆκΈ°ν™”κ°€ 이루어진닀.
β€’
λΆ€λͺ¨ 클래슀의 μƒμ„±μž μ΄ˆκΈ°ν™” μˆ˜ν–‰ β†’ μžμ‹ 클래슀의 μ΄ˆκΈ°ν™”
β€’
λΆ€λͺ¨ ν΄λž˜μŠ€κ°€ κΈ°λ³Έ μƒμ„±μžλ₯Ό 가지고 μžˆμ§€ μ•Šμ€ 경우 (ex μž„μ˜λ‘œ λ§€κ°œλ³€μˆ˜ μžˆλŠ” μƒμ„±μžλ₯Ό μ •μ˜ν•œ 경우) μžμ‹ ν΄λž˜μŠ€κ°€ μƒμ„±λ˜μ§€ μ•ŠλŠ”λ‹€. β†’ 컴파일 μ—λŸ¬

λΆ€λͺ¨ μƒμ„±μž super()

this() μƒμ„±μž 호좜
β€’
클래슀 μ•ˆμ—μ„œ Overloading된 또 λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜κΈ° μœ„ν•΄ μ‚¬μš©
super() μƒμ„±μž 호좜
β€’
λΆ€λͺ¨ 클래슀의 μƒμ„±μžλ₯Ό λͺ…μ‹œμ μœΌλ‘œ ν˜ΈμΆœν•  λ•Œ μ‚¬μš©
β€’
λΆ€λͺ¨ 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λŠ” super()λŠ” λ°˜λ“œμ‹œ μƒμ„±μžμ˜ 첫 번째 라인에 μœ„μΉ˜ν•΄μ•Ό ν•œλ‹€.
β€”> λΆ€λͺ¨ 클래슀의 μƒμ„±μžκ°€ 항상 μžμ‹λ³΄λ‹€ λ¨Όμ € μˆ˜ν–‰λ˜μ–΄μ•Ό 함!!!
β€’
λΆ€λͺ¨ 클래슀의 μƒμ„±μžκ°€ Overloading λ˜μ–΄ μ—¬λŸ¬ 개 μ‘΄μž¬ν•˜λŠ” 경우 νŠΉμ • μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜κΈ° μœ„ν•¨
β€’
λΆ€λͺ¨ ν΄λž˜μŠ€κ°€ κΈ°λ³Έ μƒμ„±μžλ₯Ό 가지고 μžˆμ§€ μ•Šμ€ κ²½μš°μ—λ„ ν™œμš©μ΄ κ°€λŠ₯ν•˜λ‹€.

상속과 멀버

λ³€μˆ˜μ˜ 상속

1.
private으둜 μ •μ˜λœ λ³€μˆ˜λŠ” 상속이 λΆˆκ°€λŠ₯ν•˜λ‹€.
2.
λ™μΌν•œ μ΄λ¦„μœΌλ‘œ μžμ‹ ν΄λž˜μŠ€μ— μ •μ˜λœ λ³€μˆ˜λŠ” μƒμ†μ—μ„œ μ œμ™Έλœλ‹€.
β€’
μžμ‹ ν΄λž˜μŠ€μ—μ„œ μ •μ˜ν•œ λ³€μˆ˜κ°€ μ‚¬μš©λ¨

this, super

this
β€’
μƒμ„±λœ 객체 μžμ‹ μ— λŒ€ν•œ μ°Έμ‘°λ₯Ό 의미
β€’
멀버 λ³€μˆ˜μ™€ λ©”μ„œλ“œ λ§€κ°œλ³€μˆ˜μ˜ 이름이 같은 경우, 두 λ³€μˆ˜λ₯Ό κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©
super
β€’
λΆ€λͺ¨ 객체에 μ ‘κ·Όν•  수 μžˆλŠ” μ°Έμ‘°λ³€μˆ˜λ‘œ μ‚¬μš©ν•¨

λ©”μ„œλ“œμ˜ 상속

λ©”μ„œλ“œ Overriding (λ©”μ„œλ“œ μž¬μ •μ˜)

β€’
λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œλ₯Ό μž¬μ‚¬μš©ν•˜μ§€ μ•Šκ³  μƒˆλ‘­κ²Œ μ •μ˜ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 것
β€’
μžμ‹ ν΄λž˜μŠ€μ—μ„œ μž¬μ •μ˜λœ λ©”μ„œλ“œλŠ” λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œμ™€ λ©”μ„œλ“œ 이름, λ§€κ°œλ³€μˆ˜μ˜ μœ ν˜• 및 κ°œμˆ˜κ°€ 동일해야 ν•œλ‹€.
β€’
μ•„λž˜μ˜ μ˜ˆμ‹œλŠ” Overriding이 μ•„λ‹Œ Overloading!

superλ₯Ό ν†΅ν•œ λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”©

β€’
Overriding은 λΆ€λͺ¨μ˜ λ©”μ„œλ“œλ₯Ό μžμ‹μ΄ μƒˆλ‘­κ²Œ μ •μ˜ν•˜κ² λ‹€λŠ” μ˜λ―Έμ΄λ―€λ‘œ λΆ€λͺ¨κ°€ 가진 λ©”μ„œλ“œλŠ” μƒμ†λ˜μ§€ μ•ŠλŠ”λ‹€.
β€’
λ©”μ„œλ“œλ₯Ό Overridingν•˜λ©΄μ„œ λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜κ³  싢은 κ²½μš°μ— superλ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ…μ‹œμ μœΌλ‘œ ν˜ΈμΆœν•  수 μžˆλ‹€.