๐Ÿผ ๋ฐฑ์•ค๋“œ/Java ๋ฌธ๋ฒ•

๊ฐ์ฒด ์ง€ํ–ฅ ๋ฌธ๋ฒ• 1/3

๊ณ„๋ž€์†Œ๋…„ 2023. 8. 20. 17:55

๊ฐ์ฒด,์ธ์Šคํ„ด์Šค, ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜, ํด๋ž˜์Šค

 

ํด๋ž˜์Šค ๋ณ€์ˆ˜ : ํ•„๋“œ ๋‚ด์—์„œ static ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์„ ์–ธ๋œ ๋ณ€์ˆ˜, static ๋ณ€์ˆ˜๋ผ๊ณ ๋„ ํ•œ๋‹ค.

์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ : ํ•„๋“œ ๋‚ด์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜ (static ํ‚ค์›Œ๋“œ ์—†์Œ)

์ง€์—ญ ๋ณ€์ˆ˜ : ๋ฉ”์„œ๋“œ ๋‚ด์— ํฌํ•จ๋œ ๋ชจ๋“  ๋ณ€์ˆ˜

 

ํด๋ž˜์Šค(class): ์„ค๊ณ„ ๋„๋ฉด.  ์‹ค์ œ ๊ฐ์ฒด๊ฐ€ ์•„๋‹˜. ์„ค๊ณ„ ๋„๋ฉด์„ ๋ณด๊ณ  ์‹ค์ œ ์ฑ…์ƒ์„ ๋งŒ๋“ ๋‹ค.

์˜ค๋ธŒ์ ํŠธ(Object) or ์ธ์Šคํ„ด์Šค(Instance): ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์ฑ…์ƒ

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ๋งํ•จ: ์‹ค์ œ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ˜„์‹ค์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ.

ํ˜„์‹ค์— ์กด์žฌํ•  ์ธ์Šคํ„ด์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ์ง€ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ

 

 ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜(Reference Variable): ์ธ์Šคํ„ด์Šค๋ฅผ ํŠน๋ณ„ํ•œ ์ด๋ฆ„์œผ๋กœ ๋ถˆ๋Ÿฌ์ฃผ๊ณ  ์‹ถ๋‹ค.

์“ฐ๋ ˆ๊ธฐ(Garbage): ์ฐธ์กฐ๋˜์ง€ ์•Š์€ ์ธ์Šคํ„ด์Šค

์˜ค๋ธŒ์ ํŠธ(์ธ์Šคํ„ด์Šค)๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํŠน๋ณ„ํ•œ ์ด๋ฆ„์œผ๋กœ ์ฐธ์กฐ(reference)ํ•ด์•ผ ํ•จ

 

ํด๋ž˜์Šค:ํ•„๋“œ(Field)์™€ ๋ฉ”์†Œ๋“œ(Method)๋ฅผ ๊ฐ€์ง

ํ•„๋“œ๋Š” ํด๋ž˜์Šค์˜ ์†์„ฑ

๋ฉ”์†Œ๋“œ๋Š” ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ

ํด๋ž˜์Šค ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ ๋‹ค.

Book์ด๋ผ๋Š” ํด๋ž˜์Šค๋Š” ํด๋ž˜์Šค๋งŒ ๊ฐ€์ง€๊ณ  ์•„๋ฌด๊ฒƒ๋„ ๋ชปํ•จ.

Book b= new Book(); ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•จ

ํด๋ž˜์Šค์ด๋ฆ„(): ์ƒ์„ฑ์ž

new ํด๋ž˜์Šค ์ด๋ฆ„(): ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ ํ•˜๋ผ๋Š” ๋ง

๋ณ€์ˆ˜ b:๋ ˆํผ๋Ÿฐ์Šค

 

         Book         b   =     new             Book(); 

๋ ˆํผ๋Ÿฐ์Šค ํƒ€์ž…   ๋ณ€์ˆ˜ =  ์ธ์Šคํ„ด์Šค ๋งŒ๋“ฆ    ์ƒ์„ฑ์ž

new Book();

์ด๋ผ๊ณ ๋งŒ ํ•˜๋ฉด ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ์—†์–ด์„œ Heap ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค = ์“ฐ๋ ˆ๊ธฐ(Garbage)

 

๊ธฐ๋ณธํ˜•ํƒ€์ž…์€ ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋งŒํผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…

์ฐธ์กฐํ˜•ํƒ€์ž…์€ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํƒ€์ž…

 


ํด๋ž˜์Šค ์„ ์–ธ

์ ‘๊ทผ์ œํ•œ์ž class ํด๋ž˜์Šค์ด๋ฆ„{
		ํ•„๋“œ;
		์ƒ์„ฑ์ž;
		๋ฉ”์†Œ๋“œ;
	
}

 


์„ค๊ณ„๊ณผ์ •

 

์„  ๊ธ‹๊ธฐ: ๊ด€๊ณ„ ํ‘œํ˜„

์ ์„ ์œผ๋กœ ํ‘œํ˜„: ์ด์šฉ=์˜์กด

 


ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ

 

static์ด ๋ถ™์ง€ ์•Š์€ ๋ฉ”์†Œ๋“œ: ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ

static์ด ๋ถ™์€ ๋ฉ”์†Œ๋“œ: ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ

ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ(=๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๋‹ค)ํ•˜๋‹ค.

๋ฉ”์†Œ๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ์˜์กดํ•œ๋‹ค.

ex) 'ํ• ์•„๋ฒ„์ง€'๋ผ๋Š” ํด๋ž˜์Šค์— ์žˆ๋Š”, '๊ฑท๋‹ค()' ๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋Š” '์ง€ํŒก์ด'์™€ ์˜์กด๊ด€๊ณ„

 


์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ

 

์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•

1,new์—ฐ์‚ฐ์ž์™€ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉ

2.ํด๋ž˜์Šค ๋กœ๋”๋ฅผ ์ด์šฉ

3.๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณต์ œ

 

๋””์ž์ธ ํŒจํ„ด: ํด๋ž˜์Šค ์ž‘์„ฑํ•˜๋Š” ํŒจํ„ด

 

์ •๋ฆฌ

ํ•„์š”ํ•œ ์ˆ˜๋งŒํผ๋งŒ ์ธ์Šคํ„ด์Šค๋ฅด ์ƒ์„ฑํ•˜์ž. ์™œ? ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์— ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ

 


๋ฉ”์†Œ๋“œ

 

๊ฐ์ฒด ์ง€ํ–ฅ์˜ ํ•ต์‹ฌ์€: ๋ฉ”์‹œ์ง•

ํ›Œ๋ฅญํ•˜๊ณ  ์„ฑ์žฅ ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ์€ ๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ์†์„ฑ๊ณผ ํ–‰๋™์ด ์–ด๋–ค๊ฐ€๋ณด๋‹ค ๋ชจ๋“ˆ์ด ์–ด๋–ป๊ฒŒ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ํ•˜๋Š”๊ฐ€์— ๋‹ฌ๋ ค์žˆ๋‹ค.         

                                                                                                                                                                                -by. Alan Curtis Kay

[]: ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ํ‘œ์‹œ

๋ฉ”์†Œ๋“œ ์ด๋ฆ„์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ด€๋ก€

  • ๋งค๊ฐœ๋ณ€์ˆ˜(parameter)-๋ฉ”์†Œ๋“œ์˜ ์ •์˜๋ถ€๋ถ„์— ๋‚˜์—ด๋˜์–ด ์žˆ๋Š” ๋ณ€์ˆ˜๋“ค
  • ์ „๋‹ฌ์ธ์ž(argument)-๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ• ๋•Œ ์ „๋‹ฌ๋˜๋Š” ์‹ค์ œ ๊ฐ’
public class VendingMachine {
    //field
    //์ƒ์„ฑ์ž
    //method
    public String pushProductButton(int menuId) {
        System.out.println(menuId + "๋ฅผ ์ „๋‹ฌ๋ฐ›์Œ.");
        return "์ฝœ๋ผ";
    }
}

public class VendingMachineMain {
    public static void main(String[] args){
        VendingMachine va1= new VendingMachine();
        VendingMachine va2= new VendingMachine();

        String product = va1.pushProductButton(100);
        System.out.println(product);

    }
}

 


๋ฉ”์†Œ๋“œ ์„ ์–ธ ๋ฐฉ๋ฒ•

 

๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ฉ”์†Œ๋“œ์— ์ „๋‹ฌํ•˜๋Š” ๊ฐ’์ด๊ณ , ๋ฐ˜ํ™˜ ๊ฐ’์€ ๋ฉ”์†Œ๋“œ๊ฐ€ ์™ธ๋ถ€๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’

1 ๋งค๊ฐœ๋ณ€์ˆ˜:O, ๋ฐ˜ํ™˜๊ฐ’:O
public int method1(int x){
……
}

2 ๋งค๊ฐœ๋ณ€์ˆ˜:X, ๋ฐ˜ํ™˜๊ฐ’:X
public void method2(){
……
}

3 ๋งค๊ฐœ๋ณ€์ˆ˜:O, ๋ฐ˜ํ™˜๊ฐ’:X
public void method3(int x){
……
}

4 ๋งค๊ฐœ๋ณ€์ˆ˜:X, ๋ฐ˜ํ™˜๊ฐ’:O
public int method4(){
……
}

 

UML ํ‘œ๊ธฐ๋ฒ•

public class MathBean {
    public void printClassName(){
        System.out.println("MathBean");
    }
    public void printNumber(int x){
        System.out.println(x);
    }
    public int getOne(){
        return 1;
    }
    public int plus(int x, int y){
        return x+y;
    }
}

 

public static void main(String[] args) 

static ์ด ๋ถ™์€ ๋ฉ”์†Œ๋“œ๋Š” ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค๊ฐ€ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋˜์ง€ ์•Š๋”๋ผ๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅ

JVM์ด ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

math.getOne()์„ ํ•˜๋ฉด math๊ฐ€ ์ฐธ์กฐํ•˜๋Š” MathBean์ธ์Šคํ„ด์Šค์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ์‹คํ–‰

public class MathBeanTest {
    public static void main(String[] args) {
        MathBean math = new MathBean(); //heap ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ„๋‹ค.
        math.printClassName();
        math.printNumber(5000);
        int x = math.getOne();
        System.out.println(x);
        int value = math.plus(200,300);
        System.out.println(value);
    }
}

 


๋ฉ”์†Œ๋“œ๊ฐ€  ์‹คํ–‰๋  ๋•Œ ์–ด๋–ค ์ผ์ด ๋ฒŒ์–ด์ง€๋Š”๊ฐ€?

 

์ปดํŒŒ์ผ์‹œ์— VendingMachine.printVersion(); ์ด ์ฝ”๋“œ๊ฐ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, staticํ•œ ๋ฉ”์†Œ๋“œ ์ด๋‹ค. 

VendingMachine.java


public String pushProductButton(int menuId) {
    System.out.println(menuId + "๋ฅผ ์ „๋‹ฌ๋ฐ›์Œ.");
    return "์ฝœ๋ผ";
}

public static void printVersion(){
    System.out.println("v1.0");
}


--------------------------------------------------------

VendingMachineMain.java


public static void main(String[] args){
	VendingMachine.pushProductButton(); //์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ์ด๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ์•ˆํ•ด์„œ ์˜ค๋ฅ˜ 
	VendingMachine.printVersion(); //static ๋ฉ”์†Œ๋“œ์ด๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ํ•„์š” x
}

 

 

 ๋‚ด์šฉ ์ •๋ฆฌ

## ์–ด๋– ํ•œ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๊ฑธ ์‹คํ–‰์‹œํ‚ค๋ ค๋ฉด JVM์€ ์–ด๋–ป๊ฒŒ ์‹คํ–‰์‹œํ‚ค๋‚˜์š”? ์–ด๋””์„œ ์ฐพ์•„์„œ ์‹คํ–‰ํ• ๊นŒ์š”?

-> ๊ทธ ํด๋ž˜์Šค๊ฐ€ ์ปดํŒŒ์ผ์ด ์™„๋ฃŒ๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด, JVM์ด ์ž๋™์œผ๋กœ CLASSPATH์— ์ง€์ •๋œ ๊ฒฝ๋กœ์—์„œ ํ•ด๋‹น class ํŒŒ์ผ์„ ์ฐพ์•„์„œ ์‹คํ–‰์‹œํ‚ต๋‹ˆ๋‹ค.

 

## ํด๋ž˜์Šค ํŒŒ์ผ์˜ ์‹คํ–‰์›๋ฆฌ

ํด๋ž˜์Šค๊ฐ€ ์ž‘์„ฑ์ด๋˜๋ฉด ํด๋ž˜์Šค ์ •๋ณด๊ฐ€ PERM์ด๋ผ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ €์žฅ์ด๋จ(๊ทธ๋ž˜์„œ JVM์€ ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ๋ฌด์Šจ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋Š”์ง€ ์•ˆ๋‹ค.)

ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฉด JVM์€ main๋ฉ”์†Œ๋“œ ๋จผ์ € ์ฐพ์•„์„œ ์‹คํ–‰ํ•จ

์‹คํ–‰๋˜๋ฉด Java Stack ์ด๋ผ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜์—ญ์— '์‹คํ–‰๋œ ๋ฉ”์†Œ๋“œ ์ •๋ณด'๊ฐ€ ์˜ฌ๋ผ๊ฐ.

Java Stack ์— ์ €์žฅ๋œ '์‹คํ–‰ ์ •๋ณด ํ•˜๋‚˜'๋ฅผ '์Šคํƒ ์—”ํŠธ๋ฆฌ'๋ผ๊ณ ํ•จ

main๋ฉ”์†Œ๋“œ์—” String[] args ๊ฐ€ ๋˜์–ด์žˆ๋Š”๋ฐ String[] ํƒ€์ž…์˜ args๋ž€ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค๋Š” ๋ง

์—ฌ๊ธฐ์„œ String[]ํƒ€์ž…์€ '์ฐธ์กฐํƒ€์ž…'์ž„์œผ๋กœ main๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ”๋กœ Heap๋ฉ”๋ชจ๋ฆฌ์—์„œ String[]์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  args๊ฐ€ ์ด๊ฑธ ์ฐธ์กฐํ•จ.

์ค‘๊ฐ„์— ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์ธ์Šคํ„ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด๊ฒƒ๋“ค๋„ Heap ๋ฉ”๋ชจ๋ฆฌ์— ์ถ”๊ฐ€๊ฐ€๋˜๊ณ  ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ๊ทธ๊ฑธ ์ฐธ์กฐํ•จ(์ฐธ์กฐ๋ณ€์ˆ˜)

static๋ฉ”์†Œ๋“œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋”ฐ๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ์‹คํ–‰ํ•  ์ˆ˜์žˆ์Œ.

main๋ฉ”์†Œ๋“œ์•ˆ์— ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋“ค์ด ์‹คํ–‰๋˜๋ฉด Java Stack์— ์Šคํƒ ์—”ํŠธ๋ฆฌ๊ฐ€ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€๋จ.

๊ทธ ๋ฉ”์†Œ๋“œ์•ˆ์— ๋ณ€์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ์ด๊ฑธ '์ง€์—ญ๋ณ€์ˆ˜'๋ผ๊ณ ํ•˜๊ณ , ์ด๊ฑด ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์‚ฌ๋ผ์ง.

๋‚˜์ค‘์— ์Šค๋ ˆ๋“œ๋ž€ ๊ฐœ๋…์ด ๋‚˜์˜ค๋Š”๋ฐ ๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋ผ๋„ ๋™์‹œ์— ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, 

์ด๊ฒฝ์šฐ์—๋„ ๋ฉ”์†Œ๋“œ ์•ˆ์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋“ค์€ ๊ฐ๊ฐ ๋‹ค๋ฅธ ์˜์—ญ์— ์ €์žฅ์ด ๋˜์—ˆ๋‹ค ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋ ๋•Œ ๊ฐ™์ด์‚ฌ๋ผ์ง.

๋งˆ์ง€๋ง‰์œผ๋กœ Java Stack ์€ FILO ์ž๋ฃŒ๊ตฌ์กฐ ํ˜•ํƒœ์—ฌ์„œ ๋จผ์ €๋“ค์–ด๊ฐ„๊ฒŒ ๋งˆ์ง€๋ง‰์— ๋‚˜์˜ด. 

์ฆ‰, main๋ฉ”์†Œ๋“œ๊ฐ€ ์ œ์ผ ๋จผ์ € ๋“ค์–ด๊ฐ”์œผ๋‹ˆ ์ œ์ผ ๋‚˜์ค‘์— ๋‚˜์˜ฌ๊บผ๊ณ , 

๊ทธ ์•ˆ์— ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ๋จผ์ € Java Stack์—์„œ ์ œ๊ฑฐ๋˜๊ณ  ๋งˆ์ง€๋ง‰์— main๋ฉ”์†Œ๋“œ๊ฐ€ ์ œ๊ฑฐ๋˜๋ฉด์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋จ

๋ฉ”์†Œ๋“œ ์•ˆ์— ์„ ์–ธ๋œ ์ง€์—ญ๋ณ€์ˆ˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์ƒ์„ฑ๋˜์—ˆ๋‹ค๊ฐ€ ๋ฉ”์†Œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ์‚ฌ๋ผ์ง„๋‹ค.

๋™์‹œ์— ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜์–ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.

 


ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ ๋งŒ๋“ค๊ธฐ, private ์ƒ์„ฑ์ž

 

static์ด ๋ถ™์€ ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†๋‹ค. (์ด๋ฏธ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ)

์ด๋•Œ, ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ ๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ƒ์„ฑ์ž์˜ ์ ‘๊ทผ ์ œํ•œ์ž๋ฅผ private๋กœ ์„ค์ •ํ•˜๋ฉด ์™ธ๋ถ€์—์„œ๋Š” ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค.

ex) Math ํด๋ž˜์Šค๋Š” private์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ๋‹ค.

์ƒ์„ฑ์ž๋Š” ๋ฉ”์†Œ๋“œ์™€ ๋‹ฌ๋ฆฌ ๋ฆฌํ„ด ํƒ€์ž…์ด ์—†๋‹ค.

์ƒ์„ฑ์ž๋ช…์€ ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ๋˜‘๊ฐ™์•„์•ผ ํ•œ๋‹ค. ๋ฉ”์†Œ๋“œ์ฒ˜๋Ÿผ ์ž„์˜๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์—†๋‹ค.

์ƒ์„ฑ์ž๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ์ปดํŒŒ์ผํ•  ๋•Œ ์ž๋™์œผ๋กœ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

 

์ฐธ๊ณ 

public ์ ‘๊ทผ ์ œํ•œ: public ์ ‘๊ทผ ์ œํ•œ์€ ๋ชจ๋“  ํŒจํ‚ค์ง€์—์„œ ์•„๋ฌด๋Ÿฐ ์ œํ•œ ์—†์ด ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. 
 

protected ์ ‘๊ทผ ์ œํ•œ: protected ์ ‘๊ทผ ์ œํ•œ์€ default ์ ‘๊ทผ ์ œํ•œ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ™์€ ํŒจํ‚ค์ง€์— ์†ํ•˜๋Š” ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ฐจ์ด์ ์œผ๋กœ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์†ํ•œ ํด๋ž˜์Šค๊ฐ€ ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ž์‹(child) ํด๋ž˜์Šค๋ผ๋ฉด ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
 

default ์ ‘๊ทผ ์ œํ•œ: default ์ ‘๊ทผ ์ œํ•œ์€ ๊ฐ™์€ ํŒจํ‚ค์ง€์—์„œ๋Š” ์•„๋ฌด๋Ÿฐ ์ œํ•œ ์—†์ด ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์—์„œ๋Š” ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. 
 

private ์ ‘๊ทผ ์ œํ•œ: private ์ ‘๊ทผ ์ œํ•œ์€ ๋™์ผํ•œ ํŒจํ‚ค์ง€์ด๊ฑด ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์ด๊ฑด ์ƒ๊ด€์—†์ด ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋กœ์ง€ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ณ  ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.