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

πŸ”­Computer ScienceπŸ”­/JAVA

μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€ 차이λ₯Ό 생각해보기 🀨

μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 비ꡐ해보고 생각해본 λ‚΄μš©μ„ 기둝해두렀고 ν•©λ‹ˆλ‹€.

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

  • μΆ”μƒλ©”μ„œλ“œλ₯Ό 적어도 1κ°œκ°€μ§„ 클래슀
  • μ„œλ‘œ 관련성이 높은 ν΄λž˜μŠ€κ°„ 곡톡 μ½”λ“œλ₯Ό κ³΅μœ ν•˜κ³  ν™•μž₯ν•˜λ €λŠ” λͺ©μ 

μΆ”μƒν΄λž˜μŠ€λŠ” 'is kind of' 관계이닀. ex) 포유λ₯˜ - μ‚¬λžŒ, μ‘°λ₯˜ - μ•΅λ¬΄μƒˆ

 

μΈν„°νŽ˜μ΄μŠ€

  • κ΅¬ν˜„λœ λ©”μ„œλ“œ 없이 μΆ”μƒλ©”μ„œλ“œμ™€ μƒμˆ˜λ§Œμ„ 가진 클래슀 (default와 static μ œμ™Έ)
  • ν•˜λ‚˜μ˜ ν΄λž˜μŠ€λŠ” μ—¬λŸ¬ 개의 μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•  수 있으며 이미 상속을 받은 ν΄λž˜μŠ€λ„ μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•  수 있음
  • μ„œλ‘œ λ‹€λ₯Έ κ΄€λ ¨μ„± μ—†λŠ” ν΄λž˜μŠ€λ“€μ„ λ…Όλ¦¬μ μœΌλ‘œ 같은 κΈ°λŠ₯의 κ΅¬ν˜„μ„ κ°•μ œν•˜λŠ” λͺ©μ 

μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λŠ” μ‚¬μš©μ˜λ„μ—μ„œ 차이점이 μžˆμŠ΅λ‹ˆλ‹€.

 

μΆ”μƒν΄λž˜μŠ€λŠ” κ³΅ν†΅λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜κ±°λ‚˜ μ„œλ‘œ 깊게 μ—°κ΄€λœ ν΄λž˜μŠ€λΌλŠ” 것을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. (동물-μ‚¬λžŒ 관계)

μΈν„°νŽ˜μ΄μŠ€λŠ” 두 ν΄λž˜μŠ€κ°€ 연관이 없을 수 μžˆμ§€λ§Œ λ™μΌν•œ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κ³  μžˆμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
(먹을 수 μžˆλŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•œ ‘μ‚¬λžŒ’κ³Ό ‘κ³€μΆ©'의 관계)

  • μ„œλ‘œ 연관성이 μžˆλŠ” ν΄λž˜μŠ€λŠ” κ³΅ν†΅λœ κΈ°λŠ₯을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이런 경우 각각의 ν΄λž˜μŠ€μ— κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κΈ°λ³΄λ‹€λŠ” μΆ”μƒν΄λž˜μŠ€μ—μ„œ 곡톡 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λ©΄ νŽΈν•©λ‹ˆλ‹€.
  • ν•˜μ§€λ§Œ μΈν„°νŽ˜μ΄μŠ€λŠ” κ³΅ν†΅λœ κΈ°λŠ₯을 κ΅¬ν˜„ν•΄λ‘˜ 수 μ—†μŠ΅λ‹ˆλ‹€. (default μ œμ™Έμ‹œ)

 

1. μΆ”μƒν΄λž˜μŠ€μ— μƒˆ κΈ°λŠ₯ μΆ”κ°€ν•˜κΈ°

κ·Έλ ‡λ‹€λ©΄ ‘포유λ₯˜'-’μ‚¬λžŒ' κ³Ό ‘μ‘°λ₯˜'-’μ•΅λ¬΄μƒˆ'κ°€ μΆ”μƒν΄λž˜μŠ€ 일반클래슀 관계일 λ•Œ

μƒˆλ‘œμš΄ κΈ°λŠ₯으둜 ‘λ¨Ήλ‹€'λ₯Ό μΆ”κ°€ν•΄μ£Όλ €λ©΄ μ–΄λ–»κ²Œ λ κΉŒμš”?

→ ‘λ¨Ήλ‹€'λΌλŠ” κ³΅ν†΅λœ κΈ°λŠ₯μ΄μ§€λ§Œ μ„œλ‘œ λ‹€λ₯Έ μΆ”μƒν΄λž˜μŠ€μ΄κΈ° λ•Œλ¬Έμ— 곡톡 λ©”μ„œλ“œλ‘œ λ§Œλ“€ μˆ˜κ°€ μ—†μŠ΅λ‹ˆλ‹€. λ˜ν•œ 닀쀑 상속이 λΆˆκ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— ‘λ¨Ήλ‹€'λΌλŠ” 클래슀λ₯Ό μΆ”κ°€μ μœΌλ‘œ 상속할 수 도 μ—†μŠ΅λ‹ˆλ‹€.

  • 각 ν΄λž˜μŠ€μ— μƒˆλ‘œμš΄ ‘λ¨Ήλ‹€’κΈ°λŠ₯ μΆ”κ°€ν•˜κΈ°
    1. 각각의 μΆ”μƒν΄λž˜μŠ€μ— ‘λ¨Ήλ‹€' κΈ°λŠ₯을 μ€‘λ³΅ν•΄μ„œ μΆ”κ°€ν•΄μ€λ‹ˆλ‹€.
    2. μΆ”μƒν΄λž˜μŠ€ μƒμœ„μ˜ 클래슀λ₯Ό μ •μ˜ν•΄μ„œ ‘λ¨Ήλ‹€'κΈ°λŠ₯을 μΆ”κ°€ν•΄μ€λ‹ˆλ‹€.

1λ²ˆμ€ ‘λ¨Ήλ‹€' κΈ°λŠ₯을 가지고 싢은 ν΄λž˜μŠ€κ°€ 100개라면 100개 λͺ¨λ‘μ— μΆ”κ°€ν•΄μ€˜μ•Όν•©λ‹ˆλ‹€.

2λ²ˆμ€ μ„œλ‘œ 연관성이 μ—†λ˜ ν΄λž˜μŠ€λ“€μ„ λ¬Άμ–΄μ€˜μ•Όν•˜κ³  μΆ”μƒν΄λž˜μŠ€λ₯Ό μƒμ†ν–ˆλ˜ λͺ¨λ“  ν΄λž˜μŠ€μ—μ„œ μƒˆ κΈ°λŠ₯을 μœ„ν•΄ 변경이 ν•„μˆ˜μ μœΌλ‘œ μΌμ–΄λ‚©λ‹ˆλ‹€.

2. μΈν„°νŽ˜μ΄μŠ€λ‘œ μƒˆ κΈ°λŠ₯ μΆ”κ°€ν•˜κΈ°

ν΄λž˜μŠ€μ— ‘둜또λ₯Ό μ‚΄ 수 μžˆλŠ”'λΌλŠ” κΈ°λŠ₯을 μΆ”κ°€ν•΄μ€€λ‹€κ³  κ°€μ •ν•΄λ΄…μ‹œλ‹€.

κΈ°μ‘΄ ν΄λž˜μŠ€μ—μ„œ ‘둜또λ₯Ό μ‚΄ 수 μžˆλŠ”' κΈ°λŠ₯이 ν•„μš”ν•˜λ©΄ μƒμœ„ν΄λž˜μŠ€μ™€ 상관없이 ν•„μš”ν•œ 클래슀만 μ„ νƒν•΄μ„œ ‘둜또λ₯Ό μ‚΄ 수 μžˆλŠ”' μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•΄μ£Όλ©΄ λ©λ‹ˆλ‹€.

  • ν•„μš”ν•œ 클래슀만 μ„ νƒν•˜λŠ” 이유
    • ‘μ‚¬λžŒ'을 μƒμ†ν•œ ‘μ΄ˆλ“±ν•™μƒ', ‘λŒ€ν•™μƒ', ‘직μž₯인',이 μžˆλ”λΌλ„ ‘둜또'λŠ” 성인인 λŒ€ν•™μƒκ³Ό 직μž₯인만 μ‚΄ 수 μžˆμŠ΅λ‹ˆλ‹€.κ·Έλ ‡λ‹€κ³  ‘λŒ€ν•™μƒ', ‘직μž₯인' ν΄λž˜μŠ€μ— 각각 κΈ°λŠ₯을 λ„£μ–΄μ£ΌκΈ°μ—λŠ” κ΄€λ ¨ ν΄λž˜μŠ€κ°€ 1000개라고 κ°€μ •ν•œλ‹€λ©΄ 쀑볡이 λ°œμƒν•˜κ²Œ λ©λ‹ˆλ‹€.
    • κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μ΄λŠ” ‘μ‚¬λžŒ' ν΄λž˜μŠ€μ— 곡톡기λŠ₯으둜 μΆ”κ°€ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 문제λ₯Ό κ°€μž₯ μ‰½κ²Œ ν•΄κ²°ν•˜λŠ” 방법은 μΈν„°νŽ˜μ΄μŠ€μž…λ‹ˆλ‹€.

‘둜또λ₯Ό μ‚΄ 수 μžˆλŠ”' κΈ°λŠ₯등을 λͺ¨λ‘ λͺ¨μ•„μ„œ ν•˜λ‚˜μ˜ μΈν„°νŽ˜μ΄μŠ€λ‘œ μ •μ˜ν•˜κ³  ν•„μš”ν•œ ν΄λž˜μŠ€λŠ” 각각 이λ₯Ό κ΅¬ν˜„ν•΄μ£ΌκΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€.

μ΄λŠ” μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜λ‚˜ κ°€λ…μ„±μ—μ„œ 훨씬 μ’‹μŠ΅λ‹ˆλ‹€.

 

 

μΆ”μƒν΄λž˜μŠ€ : 같은 μ‘°μƒν΄λž˜μŠ€λ₯Ό κ°€μ§€λ©΄μ„œ μ‘°μƒμ˜ ν•˜μœ„ 클래슀 λͺ¨λ‘μ—κ²Œ λ˜‘κ°™μ€ κΈ°λŠ₯이 ν•„μš”ν•œ 경우

μΈν„°νŽ˜μ΄μŠ€ : 상속관계와 상관없이 같은 κΈ°λŠ₯이 ν•„μš”ν•œ 경우