Coding Planet

[μ΄νŽ™ν‹°λΈŒ μžλ°”]chapter2 : [μ•„μ΄ν…œ1] μƒμ„±μž λŒ€μ‹  정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό κ³ λ €ν•˜λΌ λ³Έλ¬Έ

πŸ’» Java Study/Java 이둠 정리

[μ΄νŽ™ν‹°λΈŒ μžλ°”]chapter2 : [μ•„μ΄ν…œ1] μƒμ„±μž λŒ€μ‹  정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό κ³ λ €ν•˜λΌ

jhj.sharon 2023. 8. 6. 14:35
λ°˜μ‘ν˜•

 

μ•„μ΄ν…œ1 : μƒμ„±μž λŒ€μ‹  정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό κ³ λ €ν•˜λΌ

μƒμ„±μž λŒ€μ‹  λ°˜λ“œμ‹œ 정적 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λΌλŠ” μ˜λ―ΈλŠ” μ•„λ‹ˆλ‹€. λ•Œμ— 따라 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œκ°€ λ”μš± μœ μš©ν•œ 경우 μ‚¬μš©μ„ κ³ λ €ν•˜λΌλŠ” λœ»μ΄λ‹€.

 

1. 정적 λ©”μ„œλ“œμ˜ μž₯점

  • 이름을 κ°€μ§ˆ 수 μžˆλ‹€.
    • 정적 νŒ©ν† λ¦¬μ˜ 이름을 톡해 λ°˜ν™˜λ  객체의 νŠΉμ„±μ„ μ‰½κ²Œ λ¬˜μ‚¬ν•  수 μžˆλ‹€.
    • 이름을 톡해 λͺ…μ‹œμ  선언이 κ°€λŠ₯ν•΄ μ§€λŠ” 것이닀.
    • μƒμ„±μžμ˜ μ‹œκ·Έλ‹ˆμ²˜κ°€ μ€‘λ³΅λ˜λŠ” 경우 μœ μš©ν•˜λ‹€.

λ©”μ„œλ“œ 이름을 톡해 κΈ°λŠ₯을 μœ μΆ”ν•  수 μžˆλ‹€.

  • 호좜 될 λ•Œλ§ˆλ‹€ μΈμŠ€ν„΄μŠ€λ₯Ό μƒˆλ‘œ μƒμ„±ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.
    • λΆˆλ³€ 클래슀인 κ²½μš°λ‚˜ 맀번 μƒˆλ‘œμš΄ 객체λ₯Ό λ§Œλ“€ ν•„μš”κ°€ μ—†λŠ” κ²½μš°μ— 미리 λ§Œλ“€μ–΄λ‘” μΈμŠ€ν„΄μŠ€ λ˜λŠ” μΊμ‹œν•΄λ‘” μΈμŠ€ν„΄μŠ€λ₯Ό λ³€κ²½ν•  수 μžˆλ‹€.

자주 μ‚¬μš©ν•˜λŠ” 색상을 미리 λ§Œλ“€μ–΄λ†“κ³  μ‚¬μš©ν•˜κΈ°

  • λ°˜ν™˜ νƒ€μž…μ˜ ν•˜μœ„ νƒ€μž… 객체λ₯Ό λ°˜ν™˜ν•  수 μžˆλ‹€.
    • 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλŠ” μƒμ„±μžμ™€ 달리, 호좜될 λ•Œ λ°˜ν™˜ νƒ€μž…μ΄ κ³ μ •λ˜μ§€ μ•ŠλŠ”λ‹€. 즉, λ©”μ„œλ“œμ˜ λ°˜ν™˜ νƒ€μž…μ˜ ν•˜μœ„ νƒ€μž… 객체λ₯Ό λ°˜ν™˜ν•˜λŠ” 것이 κ°€λŠ₯νžˆλ‹€.
    • 이λ₯Ό 톡해 λ‹€μ–‘ν•œ 클래슀의 객체λ₯Ό λ°˜ν™˜ν•˜λŠ” μœ μ—°μ„±μ„ μ œκ³΅ν•˜λ©°, ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œμ— ꡬ체적인 클래슀의 정보λ₯Ό μˆ¨κΈ°λŠ” 데 μœ μš©ν•˜λ‹€.

  • μž…λ ₯ λ§€κ°œλ³€μˆ˜μ— 따라 맀번 λ‹€λ₯Έ 클래슀의 객체λ₯Ό λ°˜ν™˜ν•  수 μžˆλ‹€.
    • λ°˜ν™˜ νƒ€μž…μ˜ ν•˜μœ„κΈ°λ§Œ ν•˜λ©΄ μ–΄λ–€ 클래슀의 객체λ₯Ό λ°˜ν™˜ν•˜λ“  상관없닀.
    • ν•œ 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œκ°€ μ—¬λ‘œ μ’…λ₯˜μ˜ 객체λ₯Ό 생성할 μ±…μž„μ„ κ°€μ§ˆ 수 μžˆλ‹€.

  • 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό μž‘μ„±ν•˜λŠ” μ‹œμ μ—λŠ” λ°˜ν™˜ν•  객체의 ν΄λž˜μŠ€κ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.
    • λ°˜ν™˜ νƒ€μž…μ΄ 좔상 ν΄λž˜μŠ€λ‚˜ μΈν„°νŽ˜μ΄μŠ€μΌ 경우, ν•΄λ‹Ή λ©”μ„œλ“œκ°€ λ°˜ν™˜ν•˜λŠ” ꡬ체 클래슀λ₯Ό λ‚˜μ€‘μ— μ •μ˜ν•˜κ±°λ‚˜ λ³€κ²½ν•  수 μžˆλ‹€.
    • λ°˜ν™˜ν•  객체의 ν΄λž˜μŠ€κ°€ μ •μ˜λ˜μ–΄ μžˆμ§€ μ•Šμ•„λ„ ν•΄λ‹Ή λ©”μ„œλ“œ μžμ²΄λŠ” μ •μ˜ν•  수 μžˆλ‹€. λ‹Ήμ—°νžˆ μ‹€μ œλ‘œ κ·Έ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λ €λ©΄ κ·Έ μ‹œμ μ—μ„œλŠ” ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ μ‘΄μž¬ν•΄μ•Όν•œλ‹€. ν•˜μ§€λ§Œ μ½”λ“œλ₯Ό 처음 μž‘μ„±ν•  λ•Œ μΈν„°νŽ˜μ΄μŠ€λ‚˜ 좔상 클래슀λ₯Ό λ°˜ν™˜ νƒ€μž…μœΌλ‘œ ν•˜λŠ” 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό λ¨Όμ € μ •μ˜ν•˜κ³ , λ‚˜μ€‘μ— μ‹€μ œ κ΅¬ν˜„ 클래슀λ₯Ό μž‘μ„±ν•  수 μžˆλ‹€.

 

 

 

2. 정적 λ©”μ„œλ“œμ˜ 단점

  • 상속을 ν•˜λ €λ©΄ public, protected μƒμ„±μžκ°€ ν•„μš”ν•œλ° 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ§Œ 제곡 μ‹œ ν•˜μœ„ 클래슀λ₯Ό λ§Œλ“€ 수 μ—†κ²Œ λœλ‹€.
    • 클래슀λ₯Ό μƒμ†ν•˜λ €λ©΄ ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μƒμœ„ 클래슀의 μƒμ„±μžλ₯Ό 호좜 ν•  수 μžˆμ–΄μ•Όν•œλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μƒμœ„ 클래슀의 μƒμ„±μžλŠ” public λ˜λŠ” protected둜 μ„ μ–Έλ˜μ–΄μ•Ό ν•œλ‹€.
    • μ΄λŸ¬ν•œ νŠΉμ„±μ„ μ΄μš©ν•΄ 상속을 μ›ν•˜μ§€ μ•ŠλŠ” ν΄λž˜μŠ€μ—μ„œλŠ” private μƒμ„±μžμ™€ 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œμ˜ μ‘°ν•©μœΌλ‘œ 상속을 막을 수 μžˆλ‹€.
  • 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλŠ” ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ°ΎκΈ° μ–΄λ ΅λ‹€.
    • API λ¬Έμ„œμ—μ„œλŠ” μƒμ„±μžμ™€ 달리 νŠΉλ³„ν•œ μœ„μΉ˜μ— λ‚˜νƒ€λ‚˜μ§€ μ•ŠμœΌλ―€λ‘œ, μ‚¬μš©μžμ—κ²Œ 잘 μ•Œλ €μ§€μ§€ μ•Šμ„ 수 μžˆλ‹€.

 

πŸ‘ 단점 보완을 μœ„ν•œ 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œ λͺ…λͺ… μ»¨λ²€μ…˜

λͺ…λͺ…방식 μ„€λͺ… μ˜ˆμ‹œ
from 맀개 λ³€μˆ˜λ₯Ό ν•˜λ‚˜ λ°›μ•„μ„œ ν•΄λ‹Ή νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œ Date date = Date.from(instnace);
of μ—¬λŸ¬ λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ•„ μ ν•©ν•œ νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•˜λŠ” 집계 λ©”μ„œλ“œ List list = List.of(1, 2, 3);
valueOf fromκ³Ό of의 더 μžμ„Έν•œ 버전 Integer i = Integer.valueOf(10);
instance or getInstance λ§€κ°œλ³€μˆ˜λ‘œ λͺ…μ‹œν•œ μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•˜μ§€λ§Œ, 같은 μΈμŠ€ν„΄μŠ€μž„μ„ 보μž₯ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.  
create or newInstance instance, getInstance와 같은 μ˜λ―Έμ΄λ‚˜ 맀번 μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€ 생성을 보μž₯ν•  λ•Œ 주둜 μ‚¬μš© Object newArray = Array.newInstance(Integer.class, 10);
getType getInstance와 κ°™μœΌλ‚˜, 생성할 ν΄λž˜μŠ€κ°€ μ•„λ‹Œ λ‹€λ₯Έ ν΄λž˜μŠ€μ— νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•  λ•Œ μ‚¬μš© FileStore fileStore = Files.getFileStore(path);
newType newInstnace와 κ°™μœΌλ‚˜, 생성할 ν΄λž˜μŠ€κ°€ μ•„λ‹Œ λ‹€λ₯Έ ν΄λž˜μŠ€μ— νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•  λ•Œ μ‚¬μš© BufferedReader bufferedReader = Files.newBufferedReader(path);
type getType, newType을 κ°„κ²°ν•˜κ²Œ μ‚¬μš©ν•  λ•Œ μ‚¬μš©  

 

 

 

λ°˜μ‘ν˜•
Comments