[Java] Private๊ณผ Static์ด ๊ณต์กดํ ์ ์๋ค!?
๐ ๋๋ง ๋ณผ ๊ฑฐ์ผ, 'Private'
์๋ฐ์๋ ์ฌ๋ฌ ์ ๊ทผ์ ์ด์๊ฐ ์๋ค.
- Public
- Default
- Protected
- Private
์ ์ด ๋ฒ์๋ ์ด๋ฆ ๊ทธ๋๋ก ์๊ฐํ๋ฉด ๋๋ค.
์ง์์ | ํด๋์ค ๋ด๋ถ | ๋์ผ ํจํค์ง | ์์๋ฐ์ ํด๋์ค | ์ด์ธ์ ์์ญ |
private | O | X | X | X |
default | O | O | X | X |
protected | O | O | O | X |
public | O | O | O | O |
์, ์ ์ ๋ค๋ฅธ ์ด์ผ๊ธฐ๋ก ๋์ด๊ฐ์
๐โ๏ธ ๋ค ๊ฐ์ด ์ฐ์! 'Static'
์๋ฐ์๋ static์ด๋ผ๋ ์ ์ด์๊ฐ ์๋ค. ์๊ฑด static(์ ์ )ํ ๋ฉ๋ชจ๋ฆฌ์ ๋ณ์ or ๋ฉ์๋๋ฅผ ์ ์ฅํด ๋ ํ ๋ ๋ชจ๋ ๊ณต์ ํ์! ๋ผ๋ ์๋ฆฌ๋ค. ๋จ, static์ ์์ ๋ง์ ์์ญ์ด ์๊ธฐ ๋๋ฌธ์ static๋ผ๋ฆฌ๋ง ์ฌ์ฉํ ์ ์๋ค.
class whatIsStatic {
public static int num;
public static void getNum() {
num = 1;
System.out.println(num);
}
public static void getNum2() {
num += 2;
System.out.println(num);
}
public static void main(String[] args) {
getNum(); // 1 ์ถ๋ ฅ
getNum2(); // 3 ์ถ๋ ฅ
// getNum2(); ์ด๋ฐ ์์๋ก ํธ์ถํ๋ฉด 2๊ฐ ๋จผ์ ์ถ๋ ฅ๋๊ณ
// getNum(); ์ฌ๊ธฐ์๋ 1์ด ์ถ๋ ฅ๋๋ค.
// ์ฆ, ์ต์ข
์ ์ผ๋ก num์ด๋ผ๋ ๋ณ์๋ 1์ ๊ฐ์ ๊ฐ๊ฒ ๋๋ค.
}
}
์์ ๊ฐ์ด ์๋ก ๋ค๋ฅธ ๋ฉ์๋์์ ์ ์ธ๋ ๋ณ์๊ฐ ๊ฐ์ ์ธ์คํด์ค๋ก ์๋ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ด๋ ํ์ด์ฌ์์๋ global ๋ณ์์ ๋น์ทํ๋ค๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
๐ ๊ทธ๋์ private๊ณผ static์ด ์ด์จ๋๋ฐ?
๋๋ง ๋ณด๋ ค๋ private๊ณผ ๊ณต์ ํ์๋ static์ด ๋ง๋ฌ์ ๋, ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ ๊ฐ์ง๋ง ๊ทธ๋ ์ง ์๋ค. (์ฌ์ค ๋ด๊ฐ ๊ทธ๋ ๊ฒ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด ๊ธ์ ์ ๋๊ฑฐ๋ค.๐คฃ)
์ด ๋์ ์ฌ์์ ํธ๋์ด๋ฅผ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. ๋์ ์์ฐํ ๋ค๋ฅธ ํ๊ฒฝ์์ ์ํํ๊ธฐ ๋๋ฌธ์, ์ ๋ ๋ง๋ ์ผ์ด ์๋ค. ์ด ๋๋ ๋๊ฐ๋ค. ์๋ํ๋ ๋ฐฉํฅ์ฑ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์๋ก์๊ฒ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
private์ ๋จ์ํ ์ธ๋ถ ํด๋์ค๋ ํจํค์ง ๋ฑ์์ ์ ๊ทผํ๋ ค๊ณ ํ ๋, ํด๋น ๋ณ์์ ํจ๋ถ๋ก ์ ๊ทผํ์ง ๋ชปํ๊ฒ ํ๋ ์ ์ด์๊ณ ,
static์ ๋ณ์๋ฅผ static ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋๊ณ , ์ธ๋ถ ํด๋์ค๋ ํจํค์ง ๋ฑ์์ ์ ๊ทผ์ ์ด์์ ๊ท์น์ ์ง์ผ ์ ์์ ์ผ๋ก ํธ์ถํ์ ๋, ์ ์ฅ๋์ด ์๋ ๊ฐ์ ์ฃผ๋ ๊ฒ์ด๋ค. ๋ํ ํธ์ถ ํ ๊ฐ์ ๋ณํ๊ฐ ๋ฐ์ํ๋ค๋ฉด, 1์ด 3์ผ๋ก ์ฆ๊ฐํ๋ ์ ์์์ฒ๋ผ ํ๋์ ๋ณ์์์ ๊ฐ์ ๋ณํ์ํจ๋ค.
๊ทธ๋ฌ๋๊น private static ์ด์ฉ๊ณ ์ ์ฉ๊ณ ๋ฅผ ์ด์ํดํ์ง ๋ง์~! (๊ทผ๋ฐ ์์ฃผ ์ฐ์ง๋ ์์ใ
ใ
)