[JAVA] Class Method(static Method)와 μΈμŠ€ν„΄μŠ€ Method

2021. 9. 13. 22:32γ†κ°œλ… 정리 μž‘μ—…μ‹€/Java

728x90
λ°˜μ‘ν˜•

μ•ˆλ…•ν•˜μ„Έμš”? μ£Όλ‹ˆν•˜λž‘ μž…λ‹ˆλ‹€.

μ˜€λŠ˜μ€ μžλ°”μ˜ 기초 쀑 ν•˜λ‚˜μΈ Static에 λŒ€ν•΄μ„œ 정리 ν•΄ λ³Ό κ²ƒμ΄μ—μš”.

이 λ‚΄μš©μ€ μžλ°”μ˜ 정석을 μ°Έκ³  ν•˜μ˜€λ‹΅λ‹ˆλ‹€!

 

 


 

πŸ“Œ 클래슀 λ©”μ„œλ“œ(static λ©”μ„œλ“œ)와 μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ


λ©”μ„œλ“œ μ•žμ— static이 뢙은 것이 μžˆλ‹€λ©΄ Class λ©”μ„œλ“œμ΄κ³ , 그렇지 μ•ŠμœΌλ©΄ μΈμŠ€ν„΄μŠ€(객체) λ©”μ„œλ“œμΈ κ²ƒμ΄μ—μš”.

클래슀 λ©”μ„œλ“œλ„ 클래슀 λ³€μˆ˜μ²˜λŸΌ 객체λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³ λ„ 'ClassName.MethodName(맀개 λ³€μˆ˜)' ν˜•μ‹μœΌλ‘œ 호좜이 κ°€λŠ₯ν•œ κ²ƒμ΄μ—μš”.

ν•˜μ§€λ§Œ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλŠ” λ°˜λ“œμ‹œ 객체λ₯Ό μƒμ„±ν•΄μ•Όλ§Œ ν˜ΈμΆœν•  수 μžˆλŠ” κ²ƒμ΄μ—μš”.

 

κ·Έλ ‡λ‹€λ©΄ μ–΄λ–€ κ²½μš°μ— static을 μ‚¬μš©ν•˜μ—¬ 클래슀 λ©”μ„œλ“œλ‘œ μ •μ˜ν•˜λŠ” κ²ƒμΌκΉŒμš”?

 

ν΄λž˜μŠ€λŠ” 'Data(λ³€μˆ˜)와 Data에 κ΄€λ ¨λœ λ©”μ„œλ“œμ˜ 집합'이기 λ•Œλ¬Έμ— 같은 클래슀 내에 μžˆλŠ” λ©”μ„œλ“œμ™€ λ©€λ²„λ³€μˆ˜λŠ” μ•„μ£Ό λ°€μ ‘ν•œ 관계가 μžˆλŠ” κ²ƒμ΄μ—μš”.

 

μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ™€ κ΄€λ ¨λœ μž‘μ—…μ„ ν•˜λŠ” 즉, λ©”μ„œλ“œμ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ”λ° μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό ν•„μš”λ‘œ ν•˜λŠ” λ©”μ„œλ“œμΈ κ²ƒμ΄μ—μš”.

 

그런데 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λŠ” μΈμŠ€ν„΄μŠ€(객체)λ₯Ό μƒμ„±ν•΄μ•Όλ§Œ λ§Œλ“€μ–΄μ§€κΈ° λ•Œλ¬Έμ— μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ μ—­μ‹œ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•΄μ•Όλ§Œ ν˜ΈμΆœν•  수 μžˆλŠ” κ²ƒμ΄μ—μš”.

 

λ°˜λ³€ μΈμŠ€ν„΄μŠ€μ™€ κ΄€κ³„μ—†λŠ” (μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ‚˜ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”) λ©”μ„œλ“œλ₯Ό 클래슀 λ©”μ„œλ“œ λ°”λ‘œ 였늘의 주인곡 static λ©”μ„œλ“œλ‘œ μ •μ˜ν•˜λŠ” κ²ƒμ΄μ—μš”.

 

λ¬Όλ‘  μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€κ³ ν•΄μ„œ λ°˜λ“œμ‹œ 클래슀 λ©”μ„œλ“œλ‘œ μ •μ˜ν•΄μ•Ό ν•˜λŠ” 것은 μ•„λ‹ˆμ—μš”!

 

πŸ’‘ μ°Έκ³  :
클래슀 μ˜μ—­μ— μ„ μ–Έλœ λ³€μˆ˜λ₯Ό λ©€λ²„λ³€μˆ˜(ν•„λ“œ)라고 ν•œλ‹€. 멀버 λ³€μˆ˜ 쀑 static이 뢙은 것은 클래슀 λ³€μˆ˜(static λ³€μˆ˜), static이 뢙지 μ•Šμ€ 것은 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λΌ ν•œλ‹€. λ©€λ²„λ³€μˆ˜λŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ™€ staticλ³€μˆ˜λ₯Ό λͺ¨λ‘ ν•©μ³μ„œ λΆ€λ₯΄λŠ” μš©μ–΄

자 그럼 static에 λŒ€ν•΄μ„œ μ’€ 더 μ•Œμ•„λ³ΌκΉŒμš”?

 

  1. 클래슀 섀계 μ‹œ λ©€λ²„λ³€μˆ˜ 쀑 λͺ¨λ“  μΈμŠ€ν„΄μŠ€μ— κ³΅ν†΅μœΌλ‘œ μ‚¬μš©λ˜λŠ” 것에 static을 뢙인닀.
    • μƒμ„±λœ 각 μΈμŠ€ν„΄μŠ€λŠ” μ„œλ‘œ 독립적이기 λ•Œλ¬Έμ— 각 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λŠ” μ„œλ‘œ λ‹€λ₯Έ 값을 μœ μ§€. ν•˜μ§€λ§Œ, λͺ¨λ“  μΈμŠ€ν„΄μŠ€μ—μ„œ 같은 값이 μœ μ§€λ˜μ–΄μ•Ό ν•˜λŠ” λ³€μˆ˜λŠ” static을 λΆ™μ—¬μ„œ 클래슀 λ³€μˆ˜λ‘œ μ •μ˜ν•΄μ•Ό ν•œλ‹€.
    • 이 뢀뢄은 Springμ—μ„œ 싱글톀 νŒ¨ν„΄μ„ κ΅¬ν˜„ν•  λ•Œ 순수 μžλ°” μ½”λ“œλ‘œ κ΅¬ν˜„ν•  λ•Œ μ‚¬μš©ν•  수 μžˆλ‹€.
  2. 클래슀 λ³€μˆ˜ (staticλ³€μˆ˜)λŠ” μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜μ§€ μ•Šμ•„λ„ μ‚¬μš© κ°€λŠ₯
    • static이 뢙은 λ³€μˆ˜ (클래슀 λ³€μˆ˜)λŠ” ν΄λž˜μŠ€κ°€ Memory에 올라갈 λ•Œ 이미 μžλ™μ μœΌλ‘œ μƒμ„±λœλ‹€.
  3.  ν΄λž˜μŠ€ λ©”μ„œλ“œ(static Method)λŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 μ—†μŒ
    • μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λŠ” μΈμŠ€ν„΄μŠ€κ°€ λ°˜λ“œμ‹œ μ‘΄μž¬ν•΄μ•Όλ§Œ μ‚¬μš©ν•  수 μžˆλŠ”λ°, 클래슀 λ©”μ„œλ“œ(static이 뢙은 Method)λŠ” μΈμŠ€ν„΄μŠ€ 생성 없이 호좜 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— 클래슀 λ©”μ„œλ“œκ°€ ν˜ΈμΆœλ˜μ—ˆμ„ λ•Œ, μΈμŠ€ν„΄μŠ€κ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆλ‹€. κ·Έλž˜μ„œ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ˜ μ‚¬μš©μ„ κΈˆμ§€
    • μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ‚˜ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œμ—μ„œ static이 뢙은 멀버듀을 μ‚¬μš©ν•˜λŠ” 것은 κ°€λŠ₯. μΈμŠ€ν„΄μŠ€ λ³€μˆ˜κ°€ μ‘΄μž¬ν•œλ‹€λŠ” 것은 static λ³€μˆ˜κ°€ 이미 Memory에 μ‘΄μž¬ν•œλ‹€λŠ” 것을 μ˜λ―Έν•˜κΈ° λ•Œλ¬Έ
  1. λ©”μ„œλ“œ 내에 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, static을 λΆ™μ΄λŠ” 것이 쒋을 μˆ˜λ„ μžˆλ‹€.
    • λ©”μ„œλ“œμ˜ μž‘μ—… λ‚΄μš© 쀑 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό ν•„μš”λ‘œ ν•œλ‹€λ©΄ static을 뢙일 수 μ—†μ§€λ§Œ, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό ν•„μš”λ‘œ ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ static을 λΆ™μ΄λŠ”κ²Œ μ’‹λ‹€. μ™œλƒν•˜λ©΄ λ©”μ„œλ“œ 호좜 μ‹œκ°„μ΄ 짧아지기 λ•Œλ¬Έμ— μ„±λŠ₯ ν–₯상 효과λ₯Ό λˆ„λ¦΄ 수 있으며, static을 뢙이지 μ•Šμ€ λ©”μ„œλ“œ(μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œ)λŠ” μ‹€ν–‰ μ‹œ 호좜 λ˜μ–΄μ•Όν•  λ©”μ„œλ“œλ₯Ό μ°ΎλŠ” 과정이 μΆ”κ°€μ μœΌλ‘œ ν•„μš”ν•˜λ‹€.
 -> 클래슀의 λ©€λ²„λ³€μˆ˜ 쀑 λͺ¨λ“  μΈμŠ€ν„΄μŠ€μ— κ³΅ν†΅λœ 값을 μœ μ§€ν•΄μ•Ό ν•˜λŠ” 것이 μžˆμ–΄μ•Ό ν•œλ‹€λ©΄ static을 뢙인닀.
-> μž‘μ„±ν•œ λ©”μ„œλ“œ 쀑 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ‚˜ μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ©”μ„œλ“œμ— static을 뢙이면 μ’‹λ‹€.
λ°˜μ‘ν˜•
πŸ’‘μ°Έκ³  :
random()κ³Ό 같은 Math Class의 MethodλŠ” λͺ¨λ‘ Class Method.
Math Classμ—λŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜κ°€ ν•˜λ‚˜λ„ μ—†κ³ , μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ”λ°, ν•„μš”ν•œ 값듀을 λͺ¨λ‘ λ§€κ°œλ³€μˆ˜λ‘œ λ°›μ•„μ„œ 처리.

 

 


 

μ£Όλ‹ˆν•˜λž‘μ˜ 글이 λ§ˆμŒμ— λ“œμ…¨λ‚˜μš”? ꡬ독과 곡감! 그리고, λŒ“κΈ€ 그리고 λ°©λͺ…둝은 μ£Όλ‹ˆν•˜λž‘μ—κ²Œ λ§Žμ€ 힘이 λ©λ‹ˆλ‹€

728x90
λ°˜μ‘ν˜•