Skip to content

Latest commit

Β 

History

History
29 lines (21 loc) Β· 1.99 KB

Item_52._use_overloading_judiciously.md

File metadata and controls

29 lines (21 loc) Β· 1.99 KB

Item 52. λ©”μ„œλ“œ μ˜€λ²„λ‘œλ”©μ€ μ‹ μ€‘νžˆ μ‚¬μš©ν•˜λΌ

μ˜€λ²„λΌμ΄λ”©κ³Ό μ˜€λ²„λ‘œλ”©

μ˜€λ²„λΌμ΄λ”© λ©”μ„œλ“œμ˜ 선택은 λŸ°νƒ€μž„μ— 이루어짐

  • μ˜€λ²„λΌμ΄λ”© λ©”μ„œλ“œ 쀑 μ–΄λ–€ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν• μ§€λŠ” λŸ°νƒ€μž„μ— κ²°μ •
    • 항상 κ°€μž₯ ν•˜μœ„μ—μ„œ μ •μ˜ν•œ λ©”μ„œλ“œκ°€ 선택됨

μ˜€λ²„λ‘œλ”© λ©”μ„œλ“œμ˜ 선택은 μ»΄νŒŒμΌνƒ€μž„μ— 이루어짐

  • μ˜€λ²„λ‘œλ”©μ€ λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ„ 기반으둜 κ²°μ •
  • λ§Œμ•½ ν˜Όλ™μ„ μΌμœΌν‚¬ 여지가 μžˆλŠ” μ˜€λ²„λ‘œλ”©μΈ 경우 ν”„λ‘œκ·Έλž¨μ΄ μ˜€λ™μž‘ν•  수 있음
    • ex) Collection<T>λ₯Ό λ°›λŠ” λ©”μ„œλ“œ, Set<T>λ₯Ό λ°›λŠ” λ©”μ„œλ“œλ₯Ό ν•¨κ»˜ μ„ μ–Έν•˜λŠ” 경우
      • Set은 Collection을 κ΅¬ν˜„ν•˜λ―€λ‘œ, μ‹€μ œλ‘œ Set μžλ£Œν˜•μ„ 인자둜 λ„˜κ²Όλ‹€κ³  해도 λ‘˜ λ‹€ 이λ₯Ό 받을 수 있음
      • 즉, λŸ°νƒ€μž„μ— κ²°μ •λ˜λŠ” μ‹€μ œ κ΅¬ν˜„μ²΄κ°€ μ–΄λ–€ 클래슀의 κ°μ²΄μΈκ°€λŠ” λ©”μ„œλ“œ μ˜€λ²„λ‘œλ”©μ—μ„œλŠ” κ³ λ € 사항이 μ•„λ‹˜

λ©”μ„œλ“œ μ˜€λ²„λ‘œλ”©μ„ μ•ˆμ „ν•˜κ²Œ μ‚¬μš©ν•˜κΈ°

  • μœ„μ™€ 같은 이유둜, λ©”μ„œλ“œλ₯Ό μ˜€λ²„λ‘œλ”©ν•  λ•Œμ—λŠ” λ‹€μŒμ„ μ§€μΌœμ•Ό 함
    • (보수적 λ°©μ•ˆ) λ§€κ°œλ³€μˆ˜ κ°œμˆ˜κ°€ 같은 μ˜€λ²„λ‘œλ”© λ©”μ„œλ“œ λ§Œλ“€μ§€ μ•ŠκΈ°
    • (ν•„μˆ˜) λ§€κ°œλ³€μˆ˜ κ°œμˆ˜κ°€ κ°™κ³ , ν•˜λ‚˜κ°€ λ‹€λ₯Έ ν•˜λ‚˜μ˜ κ΅¬ν˜„μ²΄μΈ μ˜€λ²„λ‘œλ”© λ©”μ„œλ“œ λ§Œλ“€μ§€ μ•ŠκΈ°
    • κ°€λ³€μΈμˆ˜(varargs)λ₯Ό μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œλŠ” μ˜€λ²„λ‘œλ”©ν•˜μ§€ μ•ŠκΈ°
    • ν•¨μˆ˜ν˜• μΈν„°νŽ˜μ΄μŠ€λŠ” μ„œλ‘œ λ‹€λ₯Έ 것이라도 같은 μœ„μΉ˜μ˜ 인수둜 받지 μ•ŠκΈ°
    • 이외에도 μ˜€λ²„λ‘œλ”©ν–ˆμ„ λ•Œ μ–΄λ–€ λ©”μ„œλ“œκ°€ 선택될지 κ΅¬λΆ„ν•˜κΈ° μ–΄λ €μš΄ λͺ¨λ“  경우
  • μ˜€λ²„λ‘œλ”©μ„ μ‚¬μš©ν•˜λ € ν–ˆμ§€λ§Œ μœ„μ™€ 같은 μ œμ•½μ— ν•΄λ‹Ήν•  경우, λ©”μ„œλ“œλͺ…을 λ‹€λ₯΄κ²Œ μ§“λŠ” 것을 κ³ λ €ν•˜λŠ” 것도 μ’‹μŒ
    • 특히 ν•˜λ‚˜μ˜ λ§€κ°œλ³€μˆ˜λ§Œμ„ λ°›λŠ” 경우 이 λ³€μˆ˜μ˜ νƒ€μž…μ„ λ©”μ„œλ“œ 이름에 ν¬ν•¨μ‹œν‚΄μœΌλ‘œμ¨ 가독성도 높이고 λͺ¨ν˜Έν•œ λ‹€μ€‘μ •μ˜λ„ ν”Όν•  수 있음
      • ex) writeBoolean(boolean), writeInt(int), …