πŸ’» JAVA_

JAVA#18 _ 상속

CodeLoge 2025. 1. 14. 20:48

#1 μƒμ†μ΄λž€?

: JAVA의 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ 핡심 κ°œλ… 쀑 ν•˜λ‚˜

: κΈ°μ‘΄ 클래슀의 속성과 λ©”μ†Œλ“œλ₯Ό μƒˆλ‘œμš΄ ν΄λž˜μŠ€κ°€ λ¬Όλ €λ°›μ•„ μž¬μ‚¬μš©ν•˜κ³  ν™•μž₯ν•  수 μžˆλŠ” κΈ°λŠ₯

: μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ 높이고 μœ μ§€λ³΄μˆ˜λ₯Ό λ”μš± μ‰½κ²Œ ν•΄μ€Œ

#1-1 μ£Όμš” κ°œλ…

λΆ€λͺ¨ 클래슀 : 상속을 μ œκ³΅ν•˜λŠ” 클래슀. μžμ‹ ν΄λž˜μŠ€κ°€ μ‚¬μš©ν•  수 μžˆλŠ” ν•„λ“œμ™€ λ©”μ„œλ“œλ₯Ό μ •μ˜

μžμ‹ 클래슀 : λΆ€λͺ¨ 클래슀λ₯Ό 상속받아 λΆ€λͺ¨ 클래슀의 λͺ¨λ“  ν•„λ“œμ™€ λ©”μ„œλ“œλ₯Ό λ¬Όλ €λ°›λŠ” 클래슀

                   : λΆ€λͺ¨μ˜ κΈ°λŠ₯을 κ·ΈλŒ€λ‘œ μ‚¬μš© κ°€λŠ₯ν•˜λ©°, μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€ν•˜κ±°λ‚˜ κΈ°μ‘΄ κΈ°λŠ₯ λ³€κ²½ κ°€λŠ₯

#1-2 상속 μ„ μ–Έ


class λΆ€λͺ¨ν΄λž˜μŠ€ {

// ν•„λ“œμ™€ λ©”μ„œλ“œ

}

class μžμ‹ν΄λž˜μŠ€ extends λΆ€λͺ¨ν΄λž˜μŠ€ {

// λΆ€λͺ¨ 클래슀의 λͺ¨λ“  ν•„λ“œμ™€ λ©”μ„œλ“œλ₯Ό μƒμ†λ°›μŒ

}


#1-3 상속 μ‚¬μš© 이유

1. μ½”λ“œ μž¬μ‚¬μš© : μž‘μ„±λœ μ½”λ“œλ₯Ό λ‹€μ‹œ μ‚¬μš©ν•  수 μžˆμ–΄ 쀑볡을 쀄이고, 가독성과 μœ μ§€λ³΄μˆ˜κ°€ μ‰¬μ›Œμ§

2. 계측적 관계 ν‘œν˜„ : 상속을 톡해 λΆ€λͺ¨-μžμ‹ 관계λ₯Ό λͺ…ν™•νžˆ ν‘œν˜„ κ°€λŠ₯

β†ͺ︎ Ex) 동물 - 개, 고양이, μ‚¬μž

3. κΈ°λŠ₯ ν™•μž₯ : κΈ°λŠ₯을 상속받고, μΆ”κ°€ κΈ°λŠ₯을 μžμ‹ ν΄λž˜μŠ€μ—μ„œ κ΅¬ν˜„ κ°€λŠ₯

 

#2 μƒμ†μ‹œ 주의점

1. private λ§΄λ²„λŠ” μƒμ†λ˜μ§€ μ•ŠμŒ → 직접 접근이 νž˜λ“€κΈ° λ•Œλ¬Έμ—, getter & setter ν™œμš©

2. μƒμ„±μžλŠ” μƒμ†λ˜μ§€ μ•ŠμŒ → μžμ‹ 클래슀의 μƒμ„±μžμ—μ„œ λΆ€λͺ¨ 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©

3. μžμ‹ 클래슀의 λͺ¨λ“  μƒμ„±μžλŠ” 무쑰건! κ°€μž₯ λ¨Όμ €! λΆ€λͺ¨μ˜ κΈ°λ³Έ μƒμ„±μžλ₯Ό 호좜

β†ͺ︎ if. λΆ€λͺ¨ ν΄λž˜μŠ€μ—κ²Œ κΈ°λ³Έ μƒμ„±μžκ°€ μ—†λ‹€λ©΄

해결법 1 : λΆ€λͺ¨ ν΄λž˜μŠ€μ—κ²Œ κΈ°λ³Έ μƒμ„±μžλ₯Ό μ„ μ–Έ

해결법 2 : μžμ‹ 클래슀의 μƒμ„±μžμ—μ„œ λΆ€λͺ¨ ν΄λž˜μŠ€κ°€ κ°€μ§€κ³  μžˆλŠ” λ‹€λ₯Έ μƒμ„±μžλ₯Ό 호좜

κ°€λŠ₯ν•œ 2번 ν•΄κ²°λ²•μœΌλ‘œ ν•˜λŠ”κ²Œ μ’‹μŒ. 1번 해결법은 섀계λ₯Ό λΆ€μˆœλ‹€λŠ” 것.

 

β˜…β˜…β˜…μƒμ„±μž μ΄μŠˆκ°€ μƒμ†μ—μ„œ κ°€μž₯ μ€‘μš”ν•œ μ΄μŠˆβ˜…β˜…β˜…

 

#3 λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”©

: μžμ‹ ν΄λž˜μŠ€μ—μ„œ λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•˜μ—¬ μžμ‹ ν΄λž˜μŠ€μ— λ§žλŠ” κΈ°λŠ₯을 제곡

 

#4 this 와 super

: 클래슀 멀버λ₯Ό μ°Έμ‘°ν•  λ•Œ μ‚¬μš©λ˜λŠ” ν‚€μ›Œλ“œ

: 상속 κ΄€κ³„μ—μ„œ μ€‘μš”ν•œ μ—­ν• 

#4-1 this

: ν˜„μž¬ 클래슀의 객체λ₯Ό μ°Έμ‘°

: ν˜„μž¬ 클래슀의 ν•„λ“œμ™€ λ©”μ„œλ“œλ₯Ό μ°Έμ‘°

: ν˜„μž¬ 클래슀의 μƒμ„±μž 호좜

#4-2 super

: λΆ€λͺ¨ 클래슀의 객체λ₯Ό μ°Έμ‘°ν•  λ•Œ μ‚¬μš©

: λΆ€λͺ¨ 클래슀의 ν•„λ“œμ™€ λ©”μ„œλ“œλ₯Ό μ°Έμ‘°

: λΆ€λͺ¨ 클래슀의 μƒμ„±μž 호좜