item 19 leekyunghee - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki

상속을 κ³ λ €ν•΄ μ„€κ³„ν•˜κ³  λ¬Έμ„œν™”ν•˜λΌ. κ·ΈλŸ¬μ§€ μ•Šμ•˜λ‹€λ©΄ 상속을 κΈˆμ§€ν•˜λΌ.

  • 상속을 κ³ λ €ν•œ 섀계와 λ¬Έμ„œν™”
  • λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•˜λ©΄ μ–΄λ–€ 일이 μΌμ–΄λ‚˜λŠ”μ§€λ₯Ό μ •ν™•νžˆ μ •λ¦¬ν•˜μ—¬ λ¬Έμ„œλ‘œ 남겨야 ν•œλ‹€.
  • μƒμ†μš© ν΄λž˜μŠ€λŠ” μž¬μ •μ˜ν•  수 μžˆλŠ” λ©”μ„œλ“œλ“€μ„ λ‚΄λΆ€μ μœΌλ‘œ μ–΄λ–»κ²Œ μ΄μš©ν•˜λŠ”μ§€(μžκΈ°μ‚¬μš©) λ¬Έμ„œλ‘œ λ‚¨κ²¨μ•Όν•œλ‹€.
  • 클래슀의 API둜 곡개된 λ©”μ„œλ“œμ—μ„œ 클래슀 μžμ‹ μ˜ 또 λ‹€λ₯Έ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  μˆ˜λ„ μžˆλ‹€.
  • ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œκ°€ μž¬μ •μ˜ κ°€λŠ₯ λ©”μ„œλ“œλΌλ©΄ κ·Έ 사싀을 ν˜ΈμΆœν•˜λŠ” λ©”μ„œλ“œμ˜ API μ„€λͺ…에 μ μ‹œν•΄μ•Ό ν•œλ‹€.
바쁠땐 μ΄μ •λ„λ§Œμ΄λΌλ„ μž‘μ„±
/**
 * μ‚¬μ΄μ¦ˆ μ„€μ •
 *
 * @param width 폭
 * @param height 높이
 * @return κ³„μ‚°ν•œ 면적
 */

핡심 정리

API 섀계 λ¬Έμ„œλ₯Ό 잘 μž‘μ„±ν•˜μž. 
- μƒμ†μš©μœΌλ‘œ μ„€κ³„ν•œ ν΄λž˜μŠ€λŠ” 배포 전에 λ°˜λ“œμ‹œ ν•˜μœ„ 클래슀λ₯Ό λ§Œλ“€μ–΄ 검증해야 ν•œλ‹€. 
- λ‹€λ₯Έ 이가 효율 쒋은 ν•˜μœ„ 클래슀λ₯Ό λ§Œλ“€ 수 μžˆλ„λ‘ 일뢀 λ©”μ„œλ“œλ₯Ό protected둜 μ œκ³΅ν•΄μ•Ό ν•  μˆ˜λ„ μžˆλ‹€. 
- 클래슀λ₯Ό ν™•μž₯ν•΄μ•Ό ν•  λͺ…ν™•ν•œ μ΄μœ κ°€ λ– μ˜€λ₯΄μ§€ μ•ŠμœΌλ©΄ 상속을 κΈˆμ§€ν•˜λŠ” 편이 λ‚˜μ„ 것.