[JAVA] μΈν„°νŽ˜μ΄μŠ€ vs μΆ”μƒν΄λž˜μŠ€

μΆ”μƒν΄λž˜μŠ€λž€?

좔상 λ©”μ„œλ“œλ₯Ό μ„ μ–Έν•˜μ—¬ 상속을 ν†΅ν•΄μ„œ μžμ† ν΄λž˜μŠ€μ—μ„œ 완성을 μœ λ„ν•˜λŠ” ν΄λž˜μŠ€μ΄λ‹€. ν•œ 개 μ΄μƒμ˜ μΆ”μƒλ©”μ†Œλ“œλ₯Ό κ°€μ§€μ§€λ§Œ κ΅¬ν˜„ 된 λ©”μ†Œλ“œλ„ μ •μ˜κ°€ κ°€λŠ₯ν•˜λ‹€. 

  • λ―Έμ™„μ„± 섀계도
  • 상속을 μœ„ν•œ 클래슀이기 λ•Œλ¬Έμ— λ”°λ‘œ 객체λ₯Ό 생성할 수 μ—†λ‹€.
  • μΆ”μƒλ©”μ†Œλ“œλŠ” μ„ μ–Έλ§Œλ˜λ©° κ΅¬ν˜„λ˜μ§€ μ•Šμ€ λΆˆμ™„μ „ν•œ λ©”μ†Œλ“œμ΄λ―€λ‘œ 객체λ₯Ό μƒμ„±ν•˜μ§€ λͺ»ν•œλ‹€.

μΈν„°νŽ˜μ΄μŠ€λž€?

μƒμˆ˜μ™€ 좔상 λ©”μ†Œλ“œμ˜ 집합이닀. 즉, λ‘œμ§μ„ μž‘μ„±ν•  수 μ—†λ‹€.

  • κΈ°λ³Έ 섀계도
  • μΌμ’…μ˜ 좔상 클래슀둜, 좔상 λ©”μ†Œλ“œλ₯Ό κ°–μ§€λ§Œ 좔상 ν΄λž˜μŠ€λ³΄λ‹€ 좔상화 정도가 λ†’λ‹€.
  • 좔상 클래슀처럼 λ‹€λ₯Έ 클래슀λ₯Ό μž‘μ„±ν•˜λŠ”λ° 도움을 μ£ΌλŠ” λͺ©μ μœΌλ‘œ μž‘μ„±ν•œλ‹€.
  • 닀쀑 상속(κ΅¬ν˜„)이 κ°€λŠ₯ν•˜λ‹€.
  • μƒμ„±μžλ₯Ό κ°€μ§ˆ 수 μ—†μœΌλ©° 객체화가 λΆˆκ°€λŠ₯ν•˜λ‹€.

μΆ”μƒν΄λž˜μŠ€ μΈν„°νŽ˜μ΄μŠ€ 차이점

μ‚¬μš©μ˜λ„ 차이점

μΆ”μƒν΄λž˜μŠ€λŠ” IS - A "~이닀."

μΆ”μƒν΄λž˜μŠ€λŠ” 상속할 각 κ°μ²΄λ“€μ˜ 곡톡점을 μ°Ύμ•„ μΆ”μƒν™”μ‹œμΌœ 놓은 κ²ƒμ΄λ―€λ‘œ 같은 역할을 κ°€μ§€μ§€λ§Œ ν™•μž₯이 ν•„μš”ν•œ 경우 μ‚¬μš©ν•œλ‹€. 

→ 상속받아 κΈ°λŠ₯을 μ΄μš©ν•˜κ³ , ν™•μž₯μ‹œν‚€κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

 

μΈν„°νŽ˜μ΄μŠ€λŠ” HAS - A "~을 ν•  수 μžˆλŠ”"

μΈν„°νŽ˜μ΄μŠ€λŠ” 상속 관계λ₯Ό μ­‰ 타고 μ˜¬λΌκ°”μ„λ•Œ λ‹€λ₯Έ μ‘°μƒν΄λž˜μŠ€λ₯Ό μƒμ†ν•˜λŠ”λ° 같은 κΈ°λŠ₯이 ν•„μš”ν•  경우 μ‚¬μš©ν•œλ‹€.

ν΄λž˜μŠ€μ™€ λ³„λ„λ‘œ κ΅¬ν˜„ 객체가 같은 λ™μž‘μ΄ κ°€λŠ₯ν•˜λ‹€λŠ” 것을 보μž₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€. (λ‹€ν˜•μ„±) 

→ κ΅¬ν˜„ 객체와 같은 λ™μž‘μ„ 보μž₯ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

μ ‘κ·Όμž

좔상 ν΄λž˜μŠ€μ—μ„œλŠ” static μ΄λ‚˜ final 이 μ•„λ‹Œ ν•„λ“œλ₯Ό κ°€μ§ˆ 수 있고, public , protected , private λͺ¨λ‘ κ°€μ§ˆ 수 μžˆλ‹€.

μΈν„°νŽ˜μ΄μŠ€μ—μ„œλŠ” λͺ¨λ“  λ³€μˆ˜λŠ” public static final, λͺ¨λ“  λ©”μ†Œλ“œλŠ” public abstract 이닀.

닀쀑 상속 μ—¬λΆ€

μΈν„°νŽ˜μ΄μŠ€λŠ” λ‹€λ₯Έ μ—¬λŸ¬κ°œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν•¨κ»˜ κ΅¬ν˜„ν•  수 μžˆλ‹€.

좔상 ν΄λž˜μŠ€λŠ” 닀쀑 상속을 μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€.

ꡬ성

좔상 클래슀 : 일반 λ³€μˆ˜ + 일반 λ©”μ†Œλ“œ + 좔상 λ©”μ†Œλ“œ (λ©”μ†Œλ“œ λΆ€λΆ„ κ΅¬ν˜„ κ°€λŠ₯)

μΈν„°νŽ˜μ΄μŠ€ : μƒμˆ˜ + 좔상 λ©”μ†Œλ“œ (λ©”μ†Œλ“œ μ„ μ–Έλ§Œ κ°€λŠ₯)

μΆ”μƒν΄λž˜μŠ€ μΈν„°νŽ˜μ΄μŠ€ 곡톡점

λ‘˜ λ‹€ 가지고 μžˆλŠ” 좔상 λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•˜λ„λ‘ κ°•μ œν•œλ‹€.

자기 μžμ‹ μ΄ newλ₯Ό 톡해 객체λ₯Ό 생성할 수 μ—†λ‹€.

μ„ μ–Έλ§Œ 있고, κ΅¬ν˜„ λ‚΄μš©μ΄ μ—†λ‹€.