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. ๊ณ ์ •์ /๋ณ€ํ•˜์ง€ ์•Š์Œ
  - ์ •์  ๋ณ€์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋ฉ”๋ชจ๋ฆฌ์— ๊ณ ์ •๋œ ์œ„์น˜๋ฅผ ์ฐจ์ง€ํ•˜๋ฉฐ, ํ•œ ๋ฒˆ ์„ค์ •๋˜๋ฉด ๊ณต์œ  ์ƒํƒœ๊ฐ€ ์œ ์ง€๋œ๋‹ค.
class Example {
   static int counter = 0; //์ •์  ๋ณ€์ˆ˜
   
   static void increment() { // ์ •์  ๋ฉ”์„œ๋“œ
       counter++;
   }
   
}โ€‹
- counter๋Š” ์ •์  ๋ณ€์ˆ˜์ด๋ฏ€๋กœ, Exampleํด๋ž˜์Šค์˜ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๊ณต์œ ํ•œ๋‹ค.
- ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ Example.increment()๋กœ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

์ธ์Šคํ„ด์Šค(Instance. ์‹ค์ฒด, ๊ตฌ์ฒด์  ์‚ฌ๋ก€) : ํด๋ž˜์Šค๋Š” ์ถ”์ƒ์ ์ธ ์„ค๊ณ„๋„์— ๋ถˆ๊ณผํ•˜๋ฏ€๋กœ, ์ด ์„ค๊ณ„๋„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ตฌ์ฒด์ ์ธ ์‚ฌ๋ก€๋ฅผ ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ํ•œ๋‹ค. 

<์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์ฝ”๋“œ>
Car myCar = new Car(); //'Car' ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑโ€‹
์—ฌ๊ธฐ์„œ myCar๋Š” Carํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์ด๋‹ค.
myCar๋Š” ํด๋ž˜์Šค์—์„œ ์ •์˜๋œ ์†์„ฑ๊ณผ ๋™์ž‘์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ๋œ๋‹ค. 

 

 

5. ์™œ static์ด ์ค‘์š”ํ• ๊นŒ?

  5.1 ๊ฐ์ฒด์™€ ์ƒ๊ด€์—†๋Š” ๊ธฐ๋Šฅ์€ static์„ ๋ถ™์—ฌ์„œ ํด๋ž˜์Šค ์ž์ฒด์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

        ์˜ˆ : "์ด๊ฑด ์ž๋™์ฐจ์ž…๋‹ˆ๋‹ค"๋ผ๋Š” ๋ง์„ ํ•˜๋ ค๋ฉด ์ž๋™์ฐจ๊ฐ€ ๊ตณ์ด ์—†์–ด๋„ ๋˜๋‹ˆ๊น static์œผ๋กœ ํ•˜๋ฉด ๋œ๋‹ค.

  5.2 ๊ฐ์ฒด์™€ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์€ ๊ฐ์ฒด๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋‹ˆ๊นŒ static์„ ๋ถ™์ด๋ฉด ์•ˆ๋œ๋‹ค.

        ์˜ˆ : "๋นจ๊ฐ„์ƒ‰ ์ž๋™์ฐจ๊ฐ€ 100km/h๋กœ ๋‹ฌ๋ฆฐ๋‹ค"๋Š” ์ž๋™์ฐจ๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊น ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ทธ ์†์„ฑ์„ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค. 

 

 

static ์—†๋Š” ๋ฉ”์„œ๋“œ(์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ) : ๊ฐ์ฒด๊ฐ€ ์žˆ์–ด์•ผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
                                                                                              ๊ฐ ๊ฐ์ฒด๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•  ๋•Œ ์‚ฌ์šฉ.
static ์žˆ๋Š” ๋ฉ”์„œ๋“œ (ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ) : ๊ฐ์ฒด๊ฐ€ ์—†์–ด๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. 
     ๊ณตํ†ต๋œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜, ๊ฐ์ฒด์™€ ์ƒ๊ด€์—†์ด ๋™์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ.

 

+ Recent posts