๐ชฝ
"ํ๋ฆฐ ๋ด์ฉ์ด ์์ ์ ์์ต๋๋ค."
โบ ๋ณ์
๋ณ์๋, ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ด๋ฆ์ด ๋ถ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๋ค.
๋ณ์๋ ๋ณ์๊ฐ ์ ์ธ๋ ์์น์ ๋ฐ๋ผ ๋ณ์์ ์ข ๋ฅ๋ฅผ ์ ํ๋ค.
1. ํด๋์ค ๋ณ์ (์ ์ญ๋ณ์)
ํด๋์ค ๋ณ์์ ํน์ง์ ํฌ๊ฒ ๋ค๊ฐ์ง๊ฐ ์๋ค.
- ๋ณ์ ํ์ ์์ static์ ๋ถ์ธ๋ค.
- ํด๋์ค ๋ณ์๋ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๊ณต์ ํ๋ค.
- ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๊ณตํต๋ ๊ฐ์ ๊ณต์ ํ๋ค.
- ํด๋์ค ์ด๋ฆ, ํด๋์ค ๋ณ์๋ช ์ ํตํด ์ ๊ทผํ ์ ์๋ค.
Q. ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๊ณต์ ๋๋ค๋ ๋ง์ด ๋ฌด์จ ์๋ฏธ์ธ๊ฐ?
A. ์์ฑ๋ ์ธ์คํด์ค๋ ํด๋์ค ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ค๋ ๊ฒ์ด๋ค. ์ฝ๊ฒ ์ค๋ช ํ์๋ฉด ํด๋์ค ๋ณ์๋ ๋ง์์ ๋์ธ ์ฐ์ฒดํต์ด๊ณ ์ธ์คํด์ค๋ ์ง์ด๋ผ๊ณ ๋น์ ํ ์ ์๋ค. ์ง(์ธ์คํด์ค)๋ ์ฐ์ฒดํต(ํด๋์ค ๋ณ์)์ ํธ์ง๋ฅผ ๊บผ๋ผ์๋ ํธ์ง๋ฅผ ๋ฃ์ ์๋ ์๋ค. ๋ชจ๋ ์ง์ด ๋๊ฐ์ ์ฐ์ฒดํต์ ์ฐ๊ธฐ ๋๋ฌธ์ ์ด๋ค ์ง์์ ๋ฃ์ ํธ์ง๋ฅผ ๋ค๋ฅธ ์ง์์ ๊บผ๋ด ๋ณผ ์ ์๋ค.
// chat-GPT๋ฅผ ํตํด ์์ ๋ฅผ ๋ง๋ค์์ต๋๋ค.
class Counter {
// static์ด ๋ถ์ ๊ฒ์ ํตํด ํด๋์ค ๋ณ์๋ผ๋ ๊ฒ์ ์ ์ ์๋ค.
// ํด๋์ค ๋ณ์๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ๋ค.
static int count = 0;
// ์์ฑ์ Counter๋ฅผ ํตํด new Counter()๊ฐ ์์ผ๋ฉด count ๋ณ์๊ฐ ์ฆ๊ฐํ๋๋ก ํ๋ค.
Counter() {
count++;
}
// ํ์ฌ count๊ฐ ์ผ๋ง๋ ์ฆ๊ฐํ๋์ง ๋ณด์ฌ์ฃผ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค์๋ค.
void showCount() {
System.out.println("Count: " + count);
}
}
public class Main {
public static void main(String[] args) {
// ์ธ์คํด์ค c1๊ณผ c2๊ฐ ์์ฑ๋์๋ค.
// ์์ฑ์๋ฅผ ํตํด count++๊ฐ ์คํ๋๋ค.
// c1๊ณผ c2๋ก count++๊ฐ ์ด ๋ ๋ฒ ์คํ๋์๋ค.
Counter c1 = new Counter();
Counter c2 = new Counter();
// ์ด c1๊ณผ c2๋ showCount ๋ฉ์๋๋ฅผ ํตํด ๊ฒฐ๊ณผ๊ฐ์ด ์ถ๋ ฅ๋๋ค.
// ๊ฒฐ๊ณผ๊ฐ์ 2๊ฐ ๋๋ค.
// 2๊ฐ ๋์ค๋ ์ด์ ๋ ๋์ผํ ํด๋์ค ๋ณ์ count๋ฅผ ์ถ๋ ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
c1.showCount();
c2.showCount();
}
}
2. ์ธ์คํด์ค ๋ณ์ (์ ์ญ๋ณ์)
์ธ์คํด์ค ๋ณ์์ ํน์ง์ ํฌ๊ฒ ์ธ๊ฐ์ง๊ฐ ์๋ค.
- ์ธ์คํด์ค๊ฐ ์์ฑ๋์ด์ผ ๋ณ์๊ฐ ์์ฑ๋๋ค.
- ํด๋์ค ๊ฐ์ฒด์ ๋ค๋ฅด๊ฒ ๊ณต์ ๋์ง ์๋๋ค.
- ์ธ์คํด์ค๋ง๋ค ๊ณ ์ ํ ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง ์ ์๋ค.
์ธ์คํด์ค ๋ณ์์ ํด๋์ค ๋ณ์์ ์ฐจ์ด๋ฅผ ์์๋ณด๋ ์์ ๋ฅผ ์ฐพ์๋ค.
// ์ถ์ฒ - sujinhope๋
public class Main {
public static class StaticTest {
// ํด๋์ค ๋ณ์
static int classVar = 10;
//์ธ์คํด์ค ๋ณ์
int instanceVar = 28;
}
public static void main(String[] args) {
// staticTest1๊ณผ staticTest2์ธ ์ธ์คํด์ค๊ฐ ์์ฑํ๋ค.
StaticTest staticTest1 = new StaticTest();
StaticTest staticTest2 = new StaticTest();
// ์คํ ๊ฐ์ 1๋ฒ๊ณผ 2๋ฒ ๋ชจ๋ 10๊ณผ 28์ด ๋๋ค.
System.out.println("1๋ฒ " + staticTest1.classVar + ", " + staticTest1.instanceVar);
System.out.println("2๋ฒ " + staticTest2.classVar + ", " + staticTest2.instanceVar);
// ํด๋์ค ๋ณ์ staticTest1์ ๊ฐ์ 12๋ก ๋ณ๊ฒฝํ๋ค.
staticTest1.classVar = 12;
// ์ธ์คํด์ค ๋ณ์ staticTest1์ ๊ฐ์ 400์ผ๋ก ๋ณ๊ฒฝํ๋ค.
staticTest1.instanceVar = 400;
System.out.println();
// 1๋ฒ์ ์ถ๋ ฅ๊ฐ์ 12์ 400์ด ๋๋ค.
// 2๋ฒ์ ์ถ๋ ฅ๊ฐ์ 12์ 28์ด ๋๋ค.
System.out.println("1๋ฒ " + staticTest1.classVar + ", " + staticTest1.instanceVar);
System.out.println("2๋ฒ " + staticTest2.classVar + ", " + staticTest2.instanceVar);;
}
}
ํด๋์ค ๋ณ์๋ ์ธ์คํด์ค์ ๋ชจ๋ ๊ฐ์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ํ๋์ ์ธ์คํด์ค ๊ฐ์ด ๋ฐ๋๋ฉด ๋ชจ๋ ์ธ์คํด์ค๊ฐ ๊ฐ์ ๋ณ๊ฒฝ๋๋ค.
์ธ์คํด์ค ๋ณ์๋ ์ธ์คํด์ค์ ๊ฐ์ ๊ณต์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ธ์คํด์ค๊ฐ ๊ฐ๋ณ์ ์ผ๋ก ๊ฐ์ ์ ์งํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
Q. ํด๋์ค, ์ธ์คํด์ค, ํด๋์ค ๋ณ์, ์ธ์คํด์ค ๋ณ์๊ฐ ๋ฌด์์ธ๊ฐ?
A. ๋น์ ๋ก ์๋ฅผ ๋ค์ด๋ณด๊ฒ ๋ค. [ ํด๋์ค๋ ๋นตํ , ์ธ์คํด์ค๋ ๋นตํ๋ก ์ฐ์ด๋ธ ๋นต , ํด๋์ค ๋ณ์๋ ๋นต์ ํ์์ ๋จ๊ธฐ๋ ๋นต์ง์ ์๊ทธ๋์ฒ(?) , ์ธ์คํด์ค ๋ณ์๋ ๋นต ์์ ๋ค์ด๊ฐ๋ ์ผ ]์ผ๋ก ์๊ฐํ ์ ์๋ค.
3. ์ง์ญ๋ณ์
- ๋ฉ์๋ ๋ด์์ ์ ์ธ๋๋ค.
- ๋ฉ์๋๊ฐ ์คํ๋ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๋๋ค.
- ๋ฉ์๋๊ฐ ์ข ๋ฃ๋๋ฉด ์๋ฉธ๋์ด ์ฌ๋ผ์ง๋ค.
// ์ถ์ฒ - sujinhope๋
public class Main {
public static class StaticTest {
// ์ ์ญ๋ณ์ ์ค ํ๋์ธ ํด๋์ค ๋ณ์์ด๋ค.
static int classVar = 10;
// ์ ์ญ๋ณ์ ์ค ํ๋์ธ ์ธ์คํด์ค ๋ณ์์ด๋ค.
int instanceVar = 28;
// ๋ฉ์๋์ธ method๋ฅผ ๋ง๋ค์๋ค.
public void method() {
// ์ง์ญ๋ณ์ localVar
int localVar = -100;
System.out.println("์ง์ญ ๋ณ์ ๊ฐ : " + localVar);
}
}
public static void main(String[] args) {
// localTest ์ธ์คํด์ค๋ฅผ ๋ง๋ค์๋ค.
StaticTest localTest = new StaticTest();
// ์ธ์คํด์ค๋ฅผ ํตํด method ์คํํ๋ค.
localTest.method();
}
}
ํผ์ ๊ณต๋ถํ๋ฉด์ ์ดํดํ๊ณ ์ด ๋ด์ฉ์ด๋ผ ํ๋ฆฐ ๋ด์ฉ์ด ์์ ์ ์์ต๋๋ค.
๋๊ธ๋ก ์ ์ด๋์๋ฉด ์์ ํ๋๋ก ํ๊ฒ ์ต๋๋ค. ๐
[ ๋ธ๋ก๊ทธ์ ์ด ๋ด์ฉ๋ค์ ์ถ์ฒ๋ ์๋์ ์ ์ด๋ํ ๋
๋ค์ด๊ฐ์ ์ฝ์ด๋ณด์๋ฉด ๋์ฑ ๋์์ด ๋์ค ๋ฏ ํฉ๋๋ค ]
< ์ดํ ํฌ์คํ - ์ธ์คํด์ค, ์์ฑ์, ๋งค๊ฐ๋ณ์์ ์ธ์์ ์ฐจ์ด>
- ๋ณ์์ ๊ฐ๋ ์ ๋ฆฌ ์ถ์ฒ
- sujinhope๋์ ์์ ์ถ์ฒ
- ์ ์ญ๋ณ์์ ์ง์ญ๋ณ์์ ๊ฐ๋ ์ ๋ฆฌ ์ถ์ฒ
- chatGPT์ ๋์๋ ๋ฐ์์ต๋๋ค.