๐Ÿ“•JAVA

[JAVA] ๋ถˆ๋ณ€ ๊ฐ์ฒด

๋น™๋””์šฉ 2024. 4. 18.

- ์ž๋ฐ”์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ€์žฅ ํฌ๊ฒŒ ๋ณด๋ฉด ๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜•์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

    - ๊ธฐ๋ณธํ˜• : ํ•˜๋‚˜์˜๊ฐ’์„ ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜์—์„œ ๊ณต์œ ํ•˜์ง€ ์•Š์Œ

    - ์ฐธ์กฐํ˜• : ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ๊ฐ’์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜์—์„œ ๊ณต์œ  ๊ฐ€๋Šฅ

 

1. ๊ณต์œ  ์ฐธ์กฐ์™€ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ

1) ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ

- ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์–ด๋–ค ๊ณ„์‚ฐ์ด ๋œ ์ฃผ๋œ ์ž‘์—… ์™ธ์— ์ถ”๊ฐ€์ ์ธ ๋ถ€์ˆ˜ ํšจ๊ณผ๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒƒ์„ ๋งํ•จ

//name์„ ๋ฐ˜ํ™˜ํ•˜๋Š” Adress class๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •

public class AdressMain {
	Adress a = new Adress("์„œ์šธ");
    Adress b = a;
    
    b.setValue("๋ถ€์‚ฐ");
    System.out.println("a = " + a); //๋ถ€์‚ฐ
    System.out.println("b = " = b); //๋ถ€์‚ฐ

}

- ์ฒ˜์Œ ์˜๋„๋Š” b์˜ ์ฃผ์†Œ๊ฐ’๋งŒ ์„œ์šธ์—์„œ ๋ถ€์‚ฐ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค ํ–ˆ์ง€๋งŒ, a๋„ ํ•จ๊ป˜ ๋ณ€๊ฒฝ์ด ๋œ ๊ฒฝ์šฐ.

- ์ด๋ ‡๊ฒŒ ์ฃผ๋œ ์ž‘์—… ์™ธ์— ์ถ”๊ฐ€์ ์ธ ๋ถ€์ˆ˜ ํšจ๊ณผ๋ฅผ ์ผ์œผํ‚ค๋Š” ๊ฒƒ์„ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ผ๊ณ  ํ•จ

2) ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

- ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ ํ•˜๋ฉด ๋œ๋‹ค.

- ์ž๋ฐ”์—๋Š” ์ฐธ์กฐ๊ฐ’์˜ ๊ณต์œ ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‹ค. (๋ฏธ์—ฐ์— ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์—†์Œ)

public class AdressMain {
	Adress a = new Adress("์„œ์šธ");
    Adress b = new Adress("๋ถ€์‚ฐ");
    
    System.out.println("a = " + a); //์„œ์šธ
    System.out.println("b = " = b); //๋ถ€์‚ฐ

}

2. ๋ถˆ๋ณ€ ๊ฐ์ฒด - ๋„์ž…

- ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ์˜ ์ง์ ‘์ ์ธ ์›์ธ์€ ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

- ๋ถˆ๋ณ€ ๊ฐ์ฒด : ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด

public class Adress {
	private final String name; // ๋‚ด๋ถ€์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— final๋กœ ์„ ์–ธ

	public Adress(String name){
    	this.name = name;
	}
    
    //setVName์€ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ œ๊ฑฐ
    
    public getName(){
    	return name;
	}
}
public class AdressMain {
	Adress a = new Adress("์„œ์šธ");
    Adress b = a; //์ฐธ์กฐ๊ฐ’ ๋Œ€์ž…์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Œ
    
    //b.setValue("๋ถ€์‚ฐ"); //setValue๊ฐ€ ์—†์–ด์„œ ์˜ค๋ฅ˜ ์ปดํŒŒ์ผ ๋ฐœ์ƒ
    b = new Adress("๋ถ€์‚ฐ");
    System.out.println("a = " + a); //์„œ์šธ
    System.out.println("b = " = b); //๋ถ€์‚ฐ

}

- ๋ถˆ๋ณ€์ด๋ผ๋Š” ๋‹จ์ˆœํ•œ ์ œ์•ฝ์„ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ผ๋Š” ํฐ ๋ฌธ์ œ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

3. ๋ถˆ๋ณ€ ๊ฐ์ฒด - ๊ฐ’ ๋ณ€๊ฒฝ

- ๋ถˆ๋ณ€ ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด์˜ ๊ธฐ์กด ๊ฐ’์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ€์‘๋กœ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค.

class Change {
	private final int value;
    
    //๋ถˆ๋ณ€ ๊ฐ์ฒด๊ฐ€ ๋ณ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ๋ฐ˜ํ™˜
    public Change add(int addValue) {
    	return new Change(value + addValue);
	}
    
    //getter ์ƒ๋žต
}

public class ChangeMain {
	
    public Static void main(String[] args) {
    	Change c1 = new Change(10);
        Change c2 = c1.add(20);
        
        //๊ณ„์‚ฐ ์ดํ›„์—๋„ ๊ธฐ์กด๊ฐ’ / ์‹ ๊ทœ๊ฐ’ ํ™•์ธ๊ฐ€๋Šฅ
        System.out.println(c1.getValue()); //10 
        System.out.println(c2.getValue()); //30
	}
}

- ๋ถˆ๋ณ€ ๊ฐ์ฒด์—์„œ ๋ณ€๊ฒฝ๊ณผ ๊ด€๋ จ๋œ ๋ฉ”์„œ๋“œ๋“ค์€ ๋ณดํ†ต ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋ฐ›์•„์•ผ ํ•œ๋‹ค.

 

- ์ฐธ๊ณ  : ๊น€์˜ํ•œ์˜ ์‹ค์ „ ์ž๋ฐ” - ์ค‘๊ธ‰ 1ํŽธ

๋Œ“๊ธ€