Java

[Java] 정적 멀버와 Static

hyunki.Dev 2023. 11. 9. 21:37

πŸ“Œ Static 의 μ •μ˜

정적(Static)은 'κ³ μ •λœ'을 μ˜λ―Έν•©λ‹ˆλ‹€.

정적 λ©€λ²„λŠ” ν΄λž˜μŠ€μ— κ³ μ •λœ λ©€λ²„λ‘œμ„œ 객체λ₯Ό μƒμ„±ν•˜μ§€ μ•Šκ³  μ‚¬μš©ν•  수 μžˆλŠ”

ν•„λ“œ 와 λ©”μ„œλ“œλ₯Ό λ§ν•©λ‹ˆλ‹€.


πŸ“Œ Static 의 νŠΉμ§•

μ΄λŸ¬ν•œ static은 λ‹€μŒκ³Ό 같은 νŠΉμ§•μ΄ μžˆμŠ΅λ‹ˆλ‹€.

  • λ©”λͺ¨λ¦¬μ— κ³ μ •μ μœΌλ‘œ ν• λ‹Ήλ©λ‹ˆλ‹€.
    • κ°μ²΄λ§ˆλ‹€ 가지고 μžˆμ„ ν•„μš”κ°€ μ—†λŠ” 곡용 데이터라면 정적 ν•„λ“œλ‘œ μ„ μ–Έν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
  • 객체 생성없이 μ‚¬μš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • 클래슀 λ‘œλ”κ°€ 클래슀(λ°”μ΄νŠΈμ½”λ“œ)λ₯Ό λ‘œλ”©ν•΄μ„œ λ©”μ†Œλ“œ λ©”λͺ¨λ¦¬ μ˜μ—­μ— μ μž¬ν•  λ•Œ ν΄λž˜μŠ€λ³„λ‘œ κ΄€λ¦¬λ©λ‹ˆλ‹€.
    • 클래슀의 λ‘œλ”©μ΄ λλ‚˜λ©΄ λ°”λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • static λ©”μ„œλ“œ λ‚΄μ—μ„œλŠ” μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
  • 객체 μžμ‹ μ˜ 참쑰인 this ν‚€μ›Œλ“œ μ‚¬μš©μ΄ λΆˆκ°€ν•©λ‹ˆλ‹€.
  • ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ  λ•Œ ν•΄μ œλ©λ‹ˆλ‹€.
    • static이 뢙은 λ³€μˆ˜λ‚˜ λ©”μ„œλ“œλŠ” ν΄λž˜μŠ€μ™€ ν•¨κ»˜ μžλ™μœΌλ‘œ λ©”λͺ¨λ¦¬μ˜ static μ˜μ—­μ— μƒμ„±λ©λ‹ˆλ‹€.
    • main ν•¨μˆ˜λ₯Ό static 으둜 κ΅¬ν˜„ν•˜μ—¬ λ°”λ‘œ μ‹€ν–‰ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€.
    • 일반적인 λ©”μ„œλ“œλŠ” 객체λ₯Ό μƒμ„±ν•˜λ©΄ λ©”λͺ¨λ¦¬μ˜ Heap μ˜μ—­μ— μ˜¬λΌκ°€κ³  ν•΄λ‹Ήμ˜μ—­μ€ Garbage Collector에 μ˜ν•΄ λ©”λͺ¨λ¦¬ 관리가 μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.
    • static은 static μ˜μ—­μ— μ‘΄μž¬ν•˜λ―€λ‘œ λ©”λͺ¨λ¦¬ 관리가 λ˜μ§€ μ•Šμ•„ κ³Όλ„ν•˜κ²Œ μ„ μ–Έν•˜κ²Œ 되면 λ©”λͺ¨λ¦¬μ— κ³ΌλΆ€ν•˜κ°€ 올 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Œ 정적 멀버 μ„ μ–Έ

public Class 클래슀 {

// 정적 ν•„λ“œ
static νƒ€μž… ν•„λ“œ [= μ΄ˆκΈ°κ°’];

//정적 λ©”μ„œλ“œ
static λ¦¬ν„΄νƒ€μž… λ©”μ„œλ“œ(λ§€κ°œλ³€μˆ˜μ„ μ–Έ, ...) {...}

}

 

 

예λ₯Ό λ“€μ–΄ Calculator λΌλŠ” 계산기 클래슀의 경우

 

public class Calculator {

String color; //κ³„μ‚°κΈ°λ³„λ‘œ λ‹€μ–‘ν•œ 색을 κ°€μ§ˆ 수 μžˆλ‹€.
static double pi = 3.14159; //κ³„μ‚°κΈ°μ—μ„œ μ‚¬μš©ν•˜λŠ” piλŠ” 곡톡값을 μ‚¬μš©ν•œλ‹€.

void setColor(String color) {this.color = color;}
static int plus(int x, int y) {return x + y;}
static int minus(int x, int  y) {return x - y;}

}

 

 

μΈμŠ€ν„΄μŠ€ λ©”μ†Œλ“œλ‘œ μ„ μ–Έν•  것인가, 정적 λ©”μ†Œλ“œλ‘œ μ„ μ–Έν•  κ²ƒμΈκ°€μ˜ κΈ°μ€€

- μΈμŠ€ν„΄μŠ€ ν•„λ“œλ₯Ό ν¬ν•¨ν•˜κ³  μžˆλ‹€λ©΄ μΈμŠ€ν„΄μŠ€ λ©”μ†Œλ“œ

- μΈμŠ€ν„΄μŠ€ ν•„λ“œλ₯Ό ν¬ν•¨ν•˜κ³  μžˆμ§€ μ•Šλ‹€λ©΄ 정적 λ©”μ†Œλ“œ

- Calculator 클래슀의 λ§μ…ˆ, λΊ„μ…ˆ κΈ°λŠ₯은 μΈμŠ€ν„΄μŠ€ ν•„λ“œλ₯Ό μ΄μš©ν•˜κΈ°λ³΄λ‹€λŠ” μ™ΈλΆ€μ—μ„œ 주어진 λ§€κ°œκ°’λ“€μ„ 가지고 λ§μ…ˆκ³Ό λ»΄μ…ˆ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λ―€λ‘œ 정적 λ©”μ†Œλ“œλ‘œ μ„ μ–Έν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

 


πŸ“Œ 정적 멀버 μ‚¬μš©

클래슀 이름과 ν•¨κ»˜ λ„νŠΈ(.) μ—°μ‚¬μžλ‘œ μ ‘κ·Όν•˜μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€.

μœ„μ˜ Calculator 클래슀의 정적 멀버λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 μ•„λž˜μ™€ 같이 μ ‘κ·Όν•˜μ—¬ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

double result1 = 10 * 10 * Calculator.pi;
int result2 = Calculator.plus(10, 5);
int result3 = Calculator.minus(10 ,6);

 

 

 

μ°Έκ³ : 

https://jooona.tistory.com/164,

혼자 κ³΅λΆ€ν•˜λŠ” μžλ°”