static ν‚€μ›Œλ“œ

Static, 정적, 그게 뭔데?

Static ν‚€μ›Œλ“œ

Javaμ—μ„œ static의 μ‚¬μš©μ€ ν”„λ‘œκ·Έλž¨ μ‹œμž‘λΆ€ν„° μ’…λ£Œ μ „κΉŒμ§€ λ©”λͺ¨λ¦¬κ°€ ν• λ‹Ήλ˜μ–΄ μžˆλ‹€.

일반적으둜 μš°λ¦¬κ°€ λ§Œλ“  ClassλŠ” Static μ˜μ—­μ— μƒμ„±λ˜κ³ , new 연산을 톡해 μƒμ„±ν•œ κ°μ²΄λŠ” Heapμ˜μ—­μ— μƒμ„±λ©λ‹ˆλ‹€. 객체의 μƒμ„±μ‹œμ— ν• λ‹Ήλœ Heapμ˜μ—­μ˜ λ©”λͺ¨λ¦¬λŠ” Garbage Collectorλ₯Ό 톡해 μˆ˜μ‹œλ‘œ 관리λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ Static ν‚€μ›Œλ“œλ₯Ό 톡해 Static μ˜μ—­μ— ν• λ‹Ήλœ λ©”λͺ¨λ¦¬λŠ” λͺ¨λ“  객체가 κ³΅μœ ν•˜λŠ” λ©”λͺ¨λ¦¬λΌλŠ” μž₯점을 μ§€λ‹ˆμ§€λ§Œ, Garbage Collector의 관리 μ˜μ—­ 밖에 μ‘΄μž¬ν•˜λ―€λ‘œ Static을 자주 μ‚¬μš©ν•˜λ©΄ ν”„λ‘œκ·Έλž¨μ˜ μ’…λ£Œμ‹œκΉŒμ§€ λ©”λͺ¨λ¦¬κ°€ ν• λ‹Ήλœ μ±„λ‘œ μ‘΄μž¬ν•˜λ―€λ‘œ 자주 μ‚¬μš©ν•˜κ²Œ 되면 μ‹œμŠ€ν…œμ˜ νΌν¬λ¨ΌμŠ€μ— μ•…μ˜ν–₯을 주게 λ©λ‹ˆλ‹€.

static은 ν΄λž˜μŠ€μ—μ„œ κ³΅μœ λ˜λŠ” λ³€μˆ˜λ‚˜ λ©”μ†Œλ“œλ₯Ό μ •μ˜ν•  λ•Œ μ‚¬μš©λœλ‹€.

  • 클래슀 λ³€μˆ˜

  • 클래슀 λ©”μ†Œλ“œ

  • 정적 멀버

클래슀 λ³€μˆ˜

static ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄ μ„ μ–Έν•œ 클래슀 λ³€μˆ˜λŠ” 클래슀의 λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ κ³΅μœ ν•˜λŠ” λ³€μˆ˜μ΄λ‹€. λ”°λΌμ„œ 클래슀 λ³€μˆ˜λŠ” μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³ λ„ 접근이 κ°€λŠ₯ν•˜λ‹€.

  • static λ³€μˆ˜λŠ” μ„œλ‘œ λ‹€λ₯Έ μΈμŠ€ν„΄μŠ€μ—μ„œ 곡유 λ©”λͺ¨λ¦¬λ‘œ μ‚¬μš©λœλ‹€.

클래슀 λ©”μ†Œλ“œ

static ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄ μ„ μ–Έν•œ λ©”μ†Œλ“œλ₯Ό 클래슀 λ©”μ†Œλ“œλΌκ³  ν•œλ‹€. 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³ λ„ 호좜이 κ°€λŠ₯ν•˜λ‹€. (클래슀.λ©”μ†Œλ“œμ΄λ¦„ 으둜 ν˜ΈμΆœν•œλ‹€.)

  • 또, static λ©”μ†Œλ“œ μ•ˆμ—μ„œλŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ— 접근이 λΆˆκ°€λŠ₯ν•˜λ‹€.

    • static λ©”μ†Œλ“œ μ•ˆμ—μ„œλŠ” static λ³€μˆ˜λ§Œ 접근이 κ°€λŠ₯ν•˜λ‹€.

정적 멀버

μœ„μ—μ„œ μ•Œμ•„λ³Έ 클래슀 λ³€μˆ˜μ™€ 클래슀 λ©”μ†Œλ“œλ₯Ό λͺ¨λ‘ 정적 멀버라고 μΉ­ν•œλ‹€. 정적 λ©€λ²„λŠ” 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³  접근이 κ°€λŠ₯ν•˜λ‹€. μ΄λŸ¬ν•œ 정적 λ©€λ²„λŠ” μ μ ˆν•˜κ²Œ μ‚¬μš©ν•˜λ©΄ μ½”λ“œμ˜ 가독성과 μœ μ§€λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚¬ 수 μžˆμ§€λ§Œ λ°˜λŒ€λ‘œ 잘λͺ» μ‚¬μš©ν•˜λ©΄ λ–¨μ–΄μ§€κ²Œ λ˜μžˆλ‹€.

μ–Έμ œ μ‚¬μš©ν•΄μ•Ό ν• κΉŒ?

  • 곡유 데이터

    • μΈμŠ€ν„΄μŠ€κ°€ μ„€μ • κ°’, μƒμˆ˜ 등을 κ³΅μœ ν•  λ•Œ

  • λ©”λͺ¨λ¦¬ 효율

    • static ν•„λ“œλŠ” μ—¬λŸ¬ 객체λ₯Ό μƒμ„±ν•˜λ„ 같은 데이터λ₯Ό μž¬μƒμ„±ν•˜μ§€ μ•Šμ•„ λ©”λͺ¨λ¦¬λ₯Ό μ ˆμ•½ν•  수 μžˆλ‹€.

  • μƒμˆ˜

    • static final ν‚€μ›Œλ“œλ‘œ μƒμˆ˜λ₯Ό μ •μ˜ν•  λ•Œ μ‚¬μš©ν•  수 있으며 μ΄λŠ” 맀직 λ„˜λ²„μ™€ 같은 ν•˜λ“œ 코딩을 ν”Όν•  수 μžˆλ‹€.

  • 정적 νŒ©ν† λ¦¬ λ©”μ†Œλ“œ

    • 클래슀의 μƒμ„±μžλ₯Ό 숨기고, static을 μ‚¬μš©ν•΄ νŒ©ν† λ¦¬ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. μ΄λŠ” 객체 생성 방식을 μ œμ–΄ν•˜λ©΄μ„œ μœ μ—°μ„±μ„ 높일 수 μžˆλ‹€.

μž₯점

  • μ½”λ“œ κ°„κ²°

    • μΈμŠ€ν„΄μŠ€λ₯Ό newν‚€μ›Œλ“œλ‘œ 생성할 ν•„μš” 없이 λ°”λ‘œ 호좜이 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— κ°„κ²°ν•΄μ§„λ‹€.

  • GC μ˜€λ²„ν—€λ“œλ₯Ό 쀄여쀄 수 μžˆλ‹€.

    • λ§Œμ•½ μˆ˜λ§Žμ€ κ°μ²΄μ—μ„œ λ™μΌν•œ λ©”μ„œλ“œλ₯Ό 수 없이 ν˜ΈμΆœν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. 객체λ₯Ό μƒμ„±ν•˜λ©΄μ„œ Heap μ˜μ—­μ— λ©”λͺ¨λ¦¬κ°€ μ˜¬λΌκ°€κ³ , μ‚¬μš©μ΄ λλ‚˜λ©΄ ν•΄μ œλœλ‹€. 이 λ™μž‘μ„ 수 없이 λ°˜λ³΅ν•œλ‹€λ©΄ GC에 μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•  수 μžˆλ‹€.

단점

  • 상속과 μ˜€λ²„λΌμ΄λ”© μ œμ•½

    • 정적 λ©”μ†Œλ“œλŠ” μ˜€λ²„λΌμ΄λ”©μ΄ λΆˆκ°€λŠ₯ν•˜λ‹€. 객체 μ§€ν–₯ μ„€κ³„μ˜ μž₯점 쀑 ν•˜λ‚˜λŠ” 상속과 λ‹€ν˜•μ„±μ„ μ‚¬μš©ν•΄μ„œ μ½”λ“œλ₯Ό ν™•μž₯μ‹œν‚€λŠ” 것이닀. -> OOP 원칙을 μœ„λ°˜ν•  수 있고, μΈν„°νŽ˜μ΄μŠ€ κ΅¬ν˜„μ— μ‚¬μš©ν•  수 μ—†μ–΄ μœ μ—°μ„±μ΄ λ–¨μ–΄μ§ˆ 수 μžˆλ‹€.

  • μ˜μ‘΄μ„±

    • 정적 λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ, ν•΄λ‹Ή λ©”μ†Œλ“œκ°€ μ‚¬μš©ν•˜λŠ” μ™ΈλΆ€ λ¦¬μ†ŒμŠ€μ— μ˜μ‘΄μ„±μ΄ κ°•ν•΄μ§ˆ 수 μžˆλ‹€.

  • λ©”λͺ¨λ¦¬ λ‚­λΉ„

    • ν”„λ‘œκ·Έλž¨ μ’…λ£ŒκΉŒμ§€ λ©”λͺ¨λ¦¬μ— λ‚¨μ•„μžˆμ–΄ κ³Όλ„ν•œ μ‚¬μš© μ‹œ λ‚­λΉ„λ‘œ μ΄μ–΄μ§ˆ 수 μžˆλ‹€.

  • ν…ŒμŠ€νŠΈ

    • static λ©”μ†Œλ“œλŠ” 클래슀 λ ˆλ²¨μ—μ„œ μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— λͺ© κ°μ²΄λ‚˜ μŠ€ν…μ„ μ μš©ν•˜κΈ° μ–΄λ €μšΈ 수 μžˆλ‹€. κ·Έλž˜μ„œ 정적 λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” μ½”λ“œμ˜ λ‹¨μœ„ ν…ŒμŠ€νŠΈμ— 어렀움을 κ²ͺ을 수 μžˆλ‹€.

μ–Έμ œ μ‚¬μš©?

  1. μΈμŠ€ν„΄μŠ€μ— κ³΅ν†΅μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” λ³€μˆ˜λ‚˜ λ©”μ†Œλ“œκ°€ μ‘΄μž¬ν•  λ•Œ μ‚¬μš©ν•œλ‹€. 예λ₯Όλ“€μ–΄, ClothesλΌλŠ” ν΄λž˜μŠ€κ°€ 있고, λΈŒλžœλ“œλ₯Ό ν‘œμ‹œν•΄ μ€˜μ•Όν•˜λŠ” 경우라고 μƒκ°ν•œλ‹€.

  1. staitc λ©”μ†Œλ“œ μ‚¬μš©μ„ κ³ λ €ν•  λ•Œ, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό κ·Έ μ•ˆμ—μ„œ μ‚¬μš©ν•˜λŠ”μ§€ νŒλ‹¨ν•΄μ•Όν•œλ‹€.

  • λ‹€λ₯Έ λ§λ‘œλŠ”, λ©”μ†Œλ“œ μ•ˆμ—μ„œ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ static을 λΆ™μ΄λŠ” 것을 κ³ λ €ν•œλ‹€.

μ™€λ‹ΏλŠ” λ‚΄μš©λ“€λ„ μžˆμ§€λ§Œ κ·Έλ ‡μ§€ μ•Šμ€ λ‚΄μš©λ“€λ„ μžˆλ‹€. κ²½ν—˜μ„ ν†΅ν•΄μ„œ μ•Œμ•„κ°€μ•Ό κ² λ‹€.

Last updated