λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
✏️ DevLog/Devcourse

[DevCourse] μƒμ„±ν˜• AI ν™œμš© λ°±μ—”λ“œ λ°λΈŒμ½”μŠ€ 28일차

by hyebin (Helia) 2025. 5. 16.
λ°˜μ‘ν˜•

μ˜€λŠ˜μ€ Javaμ—μ„œ κ°€μž₯ μ€‘μš”ν•œ 객체지ν–₯ κ°œλ… 쀑 ν•˜λ‚˜μΈ

상속, λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”©/μ˜€λ²„λ‘œλ”©, λ‹€ν˜•μ„±, 좔상 클래슀, ν…œν”Œλ¦Ώ λ©”μ„œλ“œ νŒ¨ν„΄μ„ λ°°μ› λ‹€.

 

좔상적인 κ°œλ…λ“€μ΄ λ§Žμ•„μ„œ μ‰½μ§€λ§Œμ€ μ•Šμ•˜μ§€λ§Œ,

직접 예제λ₯Ό 따라 ν•΄λ³΄λ©΄μ„œ μ΄ν•΄ν•˜μ§€ λͺ»ν–ˆλ˜ μ—°κ²° 고리듀이 ν•˜λ‚˜μ”© λ§žμΆ°μ§€λŠ” λŠλ‚Œμ΄μ—ˆλ‹€.


πŸ“˜ 였늘 배운 λ‚΄μš© 정리

🟦 상속 (Inheritance)

상속은 κΈ°μ‘΄ 클래슀의 속성과 κΈ°λŠ₯을 κ·ΈλŒ€λ‘œ λ¬Όλ €λ°›μ•„ μƒˆλ‘œμš΄ 클래슀λ₯Ό λ§Œλ“œλŠ” κΈ°λŠ₯이닀.

μžμ‹ ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ 클래슀의 멀버(λ³€μˆ˜, λ©”μ„œλ“œ)λ₯Ό μž¬μ‚¬μš©ν•  수 있고, ν•„μš”ν•˜λ©΄ 일뢀λ₯Ό μž¬μ •μ˜ν•΄μ„œ μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€.

λ°˜λ³΅μ„ 쀄이고, 곡톡 κΈ°λŠ₯을 ν•œ 곳에 λͺ¨μ•„ 관리할 수 있게 ν•΄μ£ΌλŠ” ꡬ쑰닀.

 

🟧 λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”© vs μ˜€λ²„λ‘œλ”©

μ˜€λ²„λΌμ΄λ”©μ€ 상속받은 λ©”μ„œλ“œλ₯Ό μžμ‹ ν΄λž˜μŠ€μ—μ„œ μž¬μ •μ˜ν•˜λŠ” 것이고,

μ˜€λ²„λ‘œλ”©μ€ ν•˜λ‚˜μ˜ 클래슀 μ•ˆμ—μ„œ 같은 μ΄λ¦„μ˜ λ©”μ„œλ“œλ₯Ό λ§€κ°œλ³€μˆ˜μ˜ ν˜•νƒœλ§Œ λ‹€λ₯΄κ²Œ μ—¬λŸ¬ 개 μ •μ˜ν•˜λŠ” 것이닀.

λΉ„μŠ·ν•œ 이름 λ•Œλ¬Έμ— 자주 ν—·κ°ˆλ Έμ—ˆλŠ”λ°, 였늘 두 κ°œλ…μ˜ 차이λ₯Ό λͺ…ν™•νžˆ 정리할 수 μžˆμ—ˆλ‹€.

 

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

λ‹€ν˜•μ„±μ€ 같은 νƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜κ°€ μ‹€μ œλ‘œλŠ” μ—¬λŸ¬ ν˜•νƒœμ˜ 객체λ₯Ό 가리킬 수 μžˆλŠ” μ„±μ§ˆμ„ λ§ν•œλ‹€.

λΆ€λͺ¨ νƒ€μž…μœΌλ‘œ μžμ‹ 객체λ₯Ό λ‹€λ£° 수 있고, μ‹€ν–‰ μ‹œμ μ— 따라 μ‹€μ œ λ™μž‘μ΄ λ‹¬λΌμ§„λ‹€λŠ” 점이 ν₯λ―Έλ‘œμ› λ‹€.

μ²˜μŒμ—” μ™œ ꡳ이 κ·Έλ ‡κ²Œ 써야 ν•˜λ‚˜ μ‹Άμ—ˆμ§€λ§Œ, μœ μ—°ν•œ μ½”λ“œ ꡬ쑰λ₯Ό λ§Œλ“€κΈ° μœ„ν•œ 핡심 κ°œλ…μ΄λΌλŠ” κ±Έ μ•Œκ²Œ 됐닀.

 

🟩 좔상 클래슀 (abstract class)

좔상 ν΄λž˜μŠ€λŠ” 객체λ₯Ό 직접 생성할 수 μ—†λŠ” 클래슀둜,

μžμ‹ ν΄λž˜μŠ€κ°€ λ°˜λ“œμ‹œ κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ” 좔상 λ©”μ„œλ“œλ₯Ό 포함할 수 μžˆλ‹€.

곡톡적인 λΌˆλŒ€λŠ” 좔상 ν΄λž˜μŠ€μ—μ„œ μ •μ˜ν•˜κ³ , μ„ΈλΆ€ κ΅¬ν˜„μ€ 각 μžμ‹ ν΄λž˜μŠ€μ—μ„œ 맑게 ν•˜λŠ” 방식이닀.

 

🟫 ν…œν”Œλ¦Ώ λ©”μ†Œλ“œ νŒ¨ν„΄

ν…œν”Œλ¦Ώ λ©”μ„œλ“œλŠ” μƒμœ„ ν΄λž˜μŠ€μ—μ„œ 전체 둜직의 흐름을 μ •μ˜ν•˜κ³ ,

세뢀적인 λ™μž‘μ€ ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ κ΅¬ν˜„ν•˜κ²Œ λ§Œλ“œλŠ” νŒ¨ν„΄μ΄λ‹€.

흐름을 μœ μ§€ν•˜λ©΄μ„œλ„ μœ μ—°ν•˜κ²Œ μ»€μŠ€ν„°λ§ˆμ΄μ§• ν•  수 μžˆλ‹€λŠ” μ μ—μ„œ ꡬ쑰적으둜 μœ μš©ν•˜λ‹€κ³  λŠκΌˆλ‹€.


🧑 λŠλ‚€ 점

μ˜€λŠ˜μ€ ν•˜λ‚˜ν•˜λ‚˜ κ°œλ… μžμ²΄λ„ 쉽지 μ•Šμ•˜μ§€λ§Œ, 무엇보닀도 이 κ°œλ…λ“€μ΄ μ™œ ν•„μš”ν•œμ§€, 어디에 μ–΄λ–»κ²Œ μ“°μ΄λŠ”μ§€λ₯Ό μ΄ν•΄ν•˜λŠ” 과정이 더 μ€‘μš”ν–ˆλ˜ 것 κ°™λ‹€.

 

μ²˜μŒμ—” κ·Έμ € μ–΄λ €μš΄ λ‹¨μ–΄λ“€μ˜ λ‚˜μ—΄μ²˜λŸΌ λŠκ»΄μ‘Œμ§€λ§Œ, 직접 μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  μ‹€ν–‰ν•΄ λ³΄λ©΄μ„œ

“μ•„, 이게 μ΄λ ‡κ²Œ μ—°κ²°λ˜λŠ”κ΅¬λ‚˜” ν•˜κ³  μ‘°κΈˆμ”© 감이 작히기 μ‹œμž‘ν–ˆλ‹€.

 

특히 μ˜€λ²„λΌμ΄λ”©κ³Ό λ‹€ν˜•μ„±μ„ ν•¨κ»˜ μ΄ν•΄ν•˜λ©΄μ„œ 클래슀λ₯Ό μ„€κ³„ν•˜λŠ” 방식이 λ‹¨μˆœ κ΅¬ν˜„ μ΄μƒμ˜ 사고λ₯Ό ν•„μš”λ‘œ ν•œλ‹€λŠ” 것을 λŠκΌˆλ‹€.

 

μš”μ¦˜ μžλ°”λ₯Ό 점점 더 깊게 λ°°μš°λ©΄μ„œ, λ‚˜μ€‘μ— 이 지식을 λ°”νƒ•μœΌλ‘œ λ°±μ—”λ“œλ₯Ό κ΅¬μ„±ν•˜κ³ , μ‹€μ œ μ„œλΉ„μŠ€ λ‘œμ§μ„ 짜게 될 날을 μƒκ°ν•˜λ‹ˆ

λ²Œμ¨λΆ€ν„° κΈ°λŒ€κ°€ λœλ‹€.

 

μ§€κΈˆμ²˜λŸΌ ν•˜λ‚˜μ”© 꼼꼼히 μ΅ν˜€λ‘λ©΄, λΆ„λͺ…νžˆ 더 νƒ„νƒ„ν•œ 기반이 λ˜μ–΄μ€„ 거라 λ―ΏλŠ”λ‹€.

λ°˜μ‘ν˜•