- ์๋ฐ์ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ์ฅ ํฌ๊ฒ ๋ณด๋ฉด ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ผ๋ก ๋๋ ์ ์๋ค.
- ๊ธฐ๋ณธํ : ํ๋์๊ฐ์ ์ฌ๋ฌ ๋ณ์์์ ๊ณต์ ํ์ง ์์
- ์ฐธ์กฐํ : ํ๋์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ๊ฐ์ ํตํด ์ฌ๋ฌ ๋ณ์์์ ๊ณต์ ๊ฐ๋ฅ
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ํธ
๋๊ธ