
1. ํด๋์ค๋?
ํด๋์ค๋ ์ค๊ณ๋์ด๋ค.
์ค๊ณ๋๋ฅผ ์ด์ฉํด์ ๋ฌผ๊ฑด(๊ฐ์ฒด)๋ฅผ ๋ง๋ค ์ ์๋ค.
์๋ฅผ ๋ค์ด, ์๋์ฐจ ์ค๊ณ๋(Car)๋ฅผ ๋ง๋ค๋ฉด, ์ด ์ค๊ณ๋๋ฅผ ๋ฐํ์ผ๋ก ๋นจ๊ฐ์ ์๋์ฐจ์ ํ๋์ ์๋์ฐจ๋ผ๋ ๋ ๋์ ์๋์ฐจ(๊ฐ์ฒด)๋ฅผ ๋ง๋ค ์ ์๋ค.
์๋์ฐจ ์ค๊ณ๋ ์์ :
class Car {
int speed; //์๋์ฐจ ์๋
String color; // ์๋์ฐจ์ ์๊น
// ์ด ์๋์ฐจ๊ฐ ๋ฌ๋ฆฌ๋ ๊ธฐ๋ฅ (์ธ์คํด์ค ๋ฉ์๋)
public void drive() {
System.out.println(color + "์๋์ฐจ๊ฐ " + speed + "km/h๋ก ๋ฌ๋ฆฝ๋๋ค!");
}
// ์๋์ฐจ ์ค๊ณ๋์ ์๊ด์์ด ์๋์ฐจ์ ์ข
๋ฅ๋ฅผ ์๋ ค์ฃผ๋ ๊ธฐ๋ฅ (ํด๋์ค ๋ฉ์๋, static ๋ฉ์๋)
public static void showType() {
System.out.println("์ด๊ฑด ์๋์ฐจ์
๋๋ค!")
}
}
2. ์ธ์คํด์ค ๋ฉ์๋์ ํด๋์ค ๋ฉ์๋ ๋น๊ต
2.1 ์ธ์คํด์ค ๋ฉ์๋(static ์๋ ๋ฉ์๋)
์ด๋ค ๋ฌผ๊ฑด(๊ฐ์ฒด)์ด ์์ด์ผ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค.
์๋ฅผ ๋ค์๋ฉด, ๋นจ๊ฐ์ ์๋์ฐจ๊ฐ "๋ด๊ฐ ๋นจ๋ฆฌ ๋ฌ๋ฆฌ๊ณ ์ถ์ด"ํ๊ณ ์๊ธฐ ์ค์ค๋ก ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋์ด๋ค.
Car ์ค๊ณ๋์์๋ drive()๋ผ๋ ๋ฉ์๋๊ฐ ์ธ์คํด์ค ๋ฉ์๋์ด๋ค. ์๋์ฐจ ๊ฐ์ฒด๋ง๋ค ๋ค๋ฅธ ์๊น๊ณผ ์๋๋ก ๋ฌ๋ฆด ์ ์๊ธฐ ๋๋ฌธ์,
๊ฐ๊ฐ์ ์๋์ฐจ(๊ฐ์ฒด)๊ฐ ํ์ํ๋ค.
2.2 ํด๋์ค ๋ฉ์๋ (static์ด ์๋ ๋ฉ์๋)
๋ฌผ๊ฑด(๊ฐ์ฒด)์ด ์์ด๋ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค.
์๋ฅผ ๋ค์ด, "์๋์ฐจ๋ ๋ฌด์์ธ๊ฐ?"๋ฅผ ์๋ ค์ฃผ๋ ๊ธฐ๋ฅ์ฒ๋ผ, ์๋์ฐจ์ ์ํ(์๊น, ์๋)์ ์๊ด์์ด ์๋์ฐจ ์ค๊ณ๋์์ ์ง์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค.
Car ์ค๊ณ๋์์๋ showType()๋ผ๋ ๋ฉ์๋๊ฐ ํด๋์ค ๋ฉ์๋์ด๋ค. ์๋์ฐจ๊ฐ ์ค์ ๋ก ๋ง๋ค์ด์ง์ง ์์๋, ์ด๊ฑด "์๋์ฐจ ์ค๊ณ๋์ ์๋ ๊ธฐ๋ฅ"์ด๋ค.
3. ์๋ฅผ ๋ค์ด์ ์ฝ๋๋ก ๋ณด๊ธฐ
<๋นจ๊ฐ์ ์๋์ฐจ์ ํ๋์ ์๋์ฐจ ๋ง๋ค๊ธฐ>
public class Main {
public static void main(String[] args) {
// ๋นจ๊ฐ์ ์๋์ฐจ ๋ง๋ค๊ธฐ
Car redCar = new Car();
redCar.speed = 100;
redCar.color = "๋นจ๊ฐ์";
// ํ๋์ ์๋์ฐจ ๋ง๋ค๊ธฐ
Car blueCar = new Car();
blueCar.speed = 80;
blueCar.color = "ํ๋์";
// ์ธ์คํด์ค ๋ฉ์๋ ํธ์ถ (๊ฐ ์๋์ฐจ๊ฐ ์๊ธฐ ๊ธฐ๋ฅ์ ์ฌ์ฉ)
redCar.drive(); //์ถ๋ ฅ: ๋นจ๊ฐ์ ์๋์ฐจ๊ฐ 100km/h๋ก ๋ฌ๋ฆฝ๋๋ค.
blueCar.drive(); //์ถ๋ ฅ: ํ๋์ ์๋์ฐจ๊ฐ 80km/h๋ก ๋ฌ๋ฆฝ๋๋ค.
//ํด๋์ค ๋ฉ์๋ ํธ์ถ(์๋์ฐจ๊ฐ ์์ด๋ ์ค๊ณ๋์์ ํธ์ถ ๊ฐ๋ฅ)
Car.showType();
}
}
4. static์ด ๋ถ๊ณ ์ ๋ถ๋ ๋ฉ์๋์ ์ฐจ์ด
static์ด ๋ถ์ด ์์ผ๋ฉด ์ค๊ณ๋(ํด๋์ค)์์ฒด์์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๊ณ ,
static์ด ์์ผ๋ฉด ๋ง๋ค์ด์ง ๋ฌผ๊ฑด(๊ฐ์ฒด)์ด ์์ด์ผ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฑธ ์ ์ ์๋ค.
- ํด๋์ค ๋ฉ์๋(static ๋ฉ์๋) : ์๋์ฐจ๋ฅผ ์ง์ ๋ณด์ง ์์๋ "์๋์ฐจ๋ 4๊ฐ์ ๋ฐํด๊ฐ ์๋ค"๊ฐ์ ๊ณตํต๋ ์ง์์ ๋งํด์ฃผ๋ ๊ธฐ๋ฅ.
- ์ธ์คํด์ค ๋ฉ์๋(static ์๋ ๋ฉ์๋) : ๋นจ๊ฐ์ ์๋์ฐจ๊ฐ "๋ด๊ฐ ๋นจ๋ฆฌ ๋ฌ๋ฆฌ๊ณ ์ถ์ด!"ํ๊ณ ์๊ธฐ๊ฐ ๊ฐ์ง ํน์ ์์ฑ์ ์ด์ฉํด์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ. ์๋์ฐจ(๊ฐ์ฒด)๊ฐ ์์ด์ผ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
static (์ ์ ) : ์์ง์ด์ง ์๊ณ ๊ณ ์ ๋์ด ์๋ค๋ผ๋ ๋ป. ์ฆ, ๊ณ ์ ๋ ์์น์์ ๊ณต์ ๋๊ณ ๋ณํํ์ง ์๋ ์์ฑ์ ๋ํ๋ธ๋ค.
1. ๊ฐ์ฒด์ ๋ฌด๊ด
- static ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด, ํน์ ํ๋๋ ๋ฉ์๋๊ฐ ํด๋์ค์ ์ข ์๋๋ค. ์ด๋ ๊ฐ์ฒด(์ธ์คํด์ค)๊ฐ ์๋, ํด๋์ค ์์ฒด์ ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ "์ ์ "์ด๋ผ๊ณ ํํํ๋ค.
2. ๊ณต์ ๋จ
- ์ ์ ํ๋๋ ํ๋ก๊ทธ๋จ ์ ์ฒด์์ ํ๋๋ง ์กด์ฌํ๋ฉฐ, ํด๋์ค์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ์ด๋ฅผ ๊ณต์ ํ๋ค. ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์์๋ ์ ๊ทผํ ์ ์๋ค.
3. ๊ณ ์ ์ /๋ณํ์ง ์์
- ์ ์ ๋ณ์๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ๋ฉ๋ชจ๋ฆฌ์ ๊ณ ์ ๋ ์์น๋ฅผ ์ฐจ์งํ๋ฉฐ, ํ ๋ฒ ์ค์ ๋๋ฉด ๊ณต์ ์ํ๊ฐ ์ ์ง๋๋ค.
- counter๋ ์ ์ ๋ณ์์ด๋ฏ๋ก, Exampleํด๋์ค์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ณต์ ํ๋ค.class Example { static int counter = 0; //์ ์ ๋ณ์ static void increment() { // ์ ์ ๋ฉ์๋ counter++; } }โ
- ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์์๋ Example.increment()๋ก ๋ฉ์๋์ ์ ๊ทผํ ์ ์๋ค.
์ธ์คํด์ค(Instance. ์ค์ฒด, ๊ตฌ์ฒด์ ์ฌ๋ก) : ํด๋์ค๋ ์ถ์์ ์ธ ์ค๊ณ๋์ ๋ถ๊ณผํ๋ฏ๋ก, ์ด ์ค๊ณ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ๊ตฌ์ฒด์ ์ธ ์ฌ๋ก๋ฅผ ์ธ์คํด์ค๋ผ๊ณ ํ๋ค.
<์ธ์คํด์ค ์์ฑ ์ฝ๋>
์ฌ๊ธฐ์ myCar๋ Carํด๋์ค์ ์ธ์คํด์ค์ด๋ค.Car myCar = new Car(); //'Car' ํด๋์ค์ ์ธ์คํด์ค ์์ฑโ
myCar๋ ํด๋์ค์์ ์ ์๋ ์์ฑ๊ณผ ๋์์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฒด๊ฐ ๋๋ค.
5. ์ static์ด ์ค์ํ ๊น?
5.1 ๊ฐ์ฒด์ ์๊ด์๋ ๊ธฐ๋ฅ์ static์ ๋ถ์ฌ์ ํด๋์ค ์์ฒด์์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค.
์ : "์ด๊ฑด ์๋์ฐจ์ ๋๋ค"๋ผ๋ ๋ง์ ํ๋ ค๋ฉด ์๋์ฐจ๊ฐ ๊ตณ์ด ์์ด๋ ๋๋๊น static์ผ๋ก ํ๋ฉด ๋๋ค.
5.2 ๊ฐ์ฒด์ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ ๊ฐ์ฒด๋ง๋ค ๋ค๋ฅด๊ฒ ๋์ํ๋๊น static์ ๋ถ์ด๋ฉด ์๋๋ค.
์ : "๋นจ๊ฐ์ ์๋์ฐจ๊ฐ 100km/h๋ก ๋ฌ๋ฆฐ๋ค"๋ ์๋์ฐจ๋ง๋ค ๋ค๋ฅผ ์ ์์ผ๋๊น ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ๊ทธ ์์ฑ์ ์ด์ฉํด์ผ ํ๋ค.
static ์๋ ๋ฉ์๋(์ธ์คํด์ค ๋ฉ์๋) : ๊ฐ์ฒด๊ฐ ์์ด์ผ ์ฌ์ฉ ๊ฐ๋ฅ.
๊ฐ ๊ฐ์ฒด๋ง๋ค ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ๊ฑฐ๋ ์กฐ์ํ ๋ ์ฌ์ฉ.
static ์๋ ๋ฉ์๋ (ํด๋์ค ๋ฉ์๋) : ๊ฐ์ฒด๊ฐ ์์ด๋ ์ฌ์ฉ ๊ฐ๋ฅ.
๊ณตํต๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ฑฐ๋, ๊ฐ์ฒด์ ์๊ด์์ด ๋์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ์ฌ์ฉ.