Skip to content

Latest commit

Β 

History

History
61 lines (38 loc) Β· 3.34 KB

File metadata and controls

61 lines (38 loc) Β· 3.34 KB

item 04 : μΈμŠ€ν„΄μŠ€ν™”λ₯Ό λ§‰μœΌλ €κ±°λ“  private μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜λΌ

정적 λ©”μ„œλ“œμ™€ 정적 ν•„λ“œλ§Œ 담은 클래슀 λ§Œλ“€κΈ°

μ΄λ”°κΈˆ λ‹¨μˆœνžˆ 정적 λ©”μ„œλ“œμ™€ 정적 ν•„λ“œλ§Œμ„ 담은 클래슀λ₯Ό λ§Œλ“€κ³  싢을 λ•Œκ°€ μžˆμ„ 것이닀.

μ‚¬μš©μ²˜

1. java.lang.Math, java.util.Arrays

  • κΈ°λ³Έ νƒ€μž… κ°’μ΄λ‚˜ λ°°μ—΄ κ΄€λ ¨ λ©”μ„œλ“œλ“€μ„ λͺ¨μ•„놓을 수 있음

2. java.util.Collections

  • νŠΉμ • μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜λŠ” 객체λ₯Ό μƒμ„±ν•΄μ£ΌλŠ” 정적 λ©”μ„œλ“œ(ν˜Ήμ€ νŒ©ν„°λ¦¬)λ₯Ό λͺ¨μ•„ 놓을 수 μžˆλ‹€.
  • μžλ°” 8λΆ€ν„° μ΄λŸ¬ν•œ λ©”μ„œλ“œλ₯Ό μΈν„°νŽ˜μ΄μŠ€λ₯Ό 넣을 수 도 μžˆλ‹€.

3. final ν΄λž˜μŠ€μ™€ κ΄€λ ¨ν•œ λ©”μ„œλ“œλ“€ λͺ¨μ•„놓을 λ•Œ μ‚¬μš©

  • final 클래슀λ₯Ό μƒμ†ν•΄μ„œ ν•˜μœ„ ν΄λž˜μŠ€μ— λ©”μ„œλ“œλ₯Ό λ„£λŠ” 건 λΆˆκ°€λŠ₯ ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. λΆˆλ³€μ„±μ„ μœ„ν•΄ μ•„μ˜ˆ 상속 λͺ»ν•˜κ²Œ 막아져 있음

정적 λ©€λ²„λ§Œ 담은 μœ ν‹Έλ¦¬ν‹° ν΄λž˜μŠ€λŠ” μΈμŠ€ν„΄μŠ€λ‘œ λ§Œλ“€μ–΄ μ“°λ €κ³  μ„€κ³„ν•œ 게 μ•„λ‹ˆλ‹€. ν•˜μ§€λ§Œ μƒμ„±μžλ₯Ό λͺ…μ‹œν•˜μ§€ μ•ŠμœΌλ©΄ μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ κΈ°λ³Έ μƒμ„±μžλ₯Ό λ§Œλ“€μ–΄μ€€λ‹€. 즉, λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ§€ μ•ŠλŠ” public μƒμ„±μžκ°€ λ§Œλ“€μ–΄μ§€λ©°, μ‚¬μš©μžλŠ” 이 μƒμ„±μžκ°€ μžλ™ μƒμ„±λœ 것인지 ꡬ뢄할 수 μ—†λ‹€.

좔상 클래슀둜 λ§Œλ“œλŠ” κ²ƒμœΌλ‘œλŠ” μΈμŠ€ν„΄μŠ€ν™”λ₯Ό 막을 수 μ—†λ‹€. ν•˜μœ„ 클래슀λ₯Ό λ§Œλ“€μ–΄ μΈμŠ€ν„΄μŠ€ν™”ν•˜λ©΄ κ·Έλ§Œμ΄λ‹€.

μ»΄νŒŒμΌλŸ¬κ°€ κΈ°λ³Έ μƒμ„±μžλ₯Ό λ§Œλ“œλŠ” κ²½μš°λŠ” 였직 λͺ…μ‹œλœ μƒμ„±μžκ°€ 없을 λ•ŒλΏμ΄λ‹ˆ private μƒμ„±μžλ₯Ό μΆ”κ°€ν•˜λ©΄ 클래슀의 μΈμŠ€ν„΄μŠ€ν™”λ₯Ό 막을 수 μžˆλ‹€.

μœ ν‹Έλ¦¬ν‹° 클래슀 섀계

읽어보면 쒋은 λΈ”λ‘œκ·Έ κΈ€ : utillity classλŠ” λ¬΄μ—‡μœΌλ‘œ κ΅¬ν˜„ν•˜λŠ” 것이 μ’‹μ„κΉŒ?

public class UtilityClass {
    // κΈ°λ³Έ μƒμ„±μžκ°€ λ§Œλ“€μ–΄μ§€λŠ” 것을 λ§‰λŠ”λ‹€ (μΈμŠ€ν„΄μŠ€ν™” λ°©μ§€μš©)
    private UtilityClass() {
        throw new AssertionError("이 ν΄λž˜μŠ€λŠ” μΈμŠ€ν„΄μŠ€ν™”ν•  수 μ—†μŠ΅λ‹ˆλ‹€.");
    }

    // μœ ν‹Έλ¦¬ν‹° λ©”μ„œλ“œ
    public static void utilityMethod() {
        // μœ ν‹Έλ¦¬ν‹° λ©”μ„œλ“œμ˜ κ΅¬ν˜„
        System.out.println("μœ ν‹Έλ¦¬ν‹° λ©”μ„œλ“œ 호좜!");
    }
}

μœ ν‹Έλ¦¬ν‹° 클래슀λ₯Ό 섀계할 λ•Œ, private μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜μ—¬ μΈμŠ€ν„΄μŠ€ν™”λ₯Ό λ°©μ§€ν•˜λŠ” 방법

  1. private μƒμ„±μž:
    • private둜 μ„ μ–Έλœ μƒμ„±μžλŠ” 클래슀 μ™ΈλΆ€μ—μ„œ μ ‘κ·Όν•  수 μ—†μ–΄ μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μ—†λ‹€.
    • μƒμ„±μž μ•ˆμ—μ„œ AssertionErrorλ₯Ό 던짐으둜써, μ‹€μˆ˜λ‘œλΌλ„ μƒμ„±μžκ°€ ν˜ΈμΆœλ˜λŠ” 것을 λ°©μ§€ν•  수 μžˆλ‹€. μ΄λŠ” μ½”λ“œμ˜ μ•ˆμ „μ„±μ„ λ†’μ΄λŠ” 데 κΈ°μ—¬
  2. 직관성:
    • μƒμ„±μžκ°€ μ‘΄μž¬ν•˜μ§€λ§Œ ν˜ΈμΆœν•  수 μ—†λŠ” 상황이 직관적이지 μ•Šμ„ 수 μžˆλ‹€. λ”°λΌμ„œ μ μ ˆν•œ 주석을 μΆ”κ°€ν•˜μ—¬ μ½”λ“œμ˜ μ˜λ„λ₯Ό λͺ…ν™•νžˆ ν•˜λŠ” 것이 μ€‘μš”
  3. 상속 λ°©μ§€:
    • λͺ¨λ“  μƒμ„±μžλŠ” μƒμœ„ 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•΄μ•Ό ν•˜λŠ”λ°, private μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜λ©΄ ν•˜μœ„ ν΄λž˜μŠ€κ°€ μƒμœ„ 클래슀의 μƒμ„±μžμ— μ ‘κ·Όν•  수 μ—†κ²Œ λœλ‹€. 이둜 인해 상속을 ν†΅ν•œ μΈμŠ€ν„΄μŠ€ν™”λ„ λ§‰νž˜
  4. λΉŒλ”λ₯Ό μ‚¬μš©ν•˜κ²Œ ν•˜λ €κ³  κ²°κ΅­ private둜 μƒμ„±μžλ₯Ό 막은 적이 있음 κ°•μ œν•˜κΈ° μœ„ν•΄