๐ฃ ์ํฉ
์์ค๋ก์ง ๋ถ์ ์ค์ ๊ฐ์ฒด ํ๋ ๊ฐ์ setํด์ฃผ๋ ๋ถ๋ถ์์ ํท๊ฐ๋ ธ๋ ๋ถ๋ถ์ด ์์ด ์ ๋ฆฌ๋ฅผ ํด๋ณธ๋ค.
๐ ์์์ฝ๋
B b = new B();
b.setName("Test");
b.setAge(16);
A a = new A();
a.setB(b);
b.setJob("engineer");
์์๋ ์กฐ๊ธ ๊ฐ๊ฒฐํ๊ฒ ์ ๋ฆฌ๋ฅผ ํด๋์๊ฑฐ์ง๋ง, ์ค์ ์ฝ๋์์๋ ๊ฐ ํด๋์ค๋ง๋ค set ํด์ฃผ๋ ๋ถ๋ถ์ด ๋ฉ์๋๋ก ํํ๋์ด์์๋๋ฐ, ์ด๋ ๊ฒ ํ์ด ๋๊ณ ๋ณด๋๊น ์ ํท๊ฐ๋ฆฐ๊ฑด์ง์ถ๋ค...๐คฃ
์๋ฐ๋ ํญ์ ๊ฐ ์ ๋ฌ (pass by value)
A a = new A();
B b = new b();
a.setB(b);
→ b์ a.setB(b)๋ ๊ฐ์ b ๊ฐ์ฒด(์ฐธ์กฐ๊ฐ)์ ๋ฐ๋ผ๋ณด๊ณ ์์.
๊ทธ๋์
A a = new A();
B b = new b();
b.setAge(30);
a.setB(b);
this.setCustom(b);
...
public void setCustomB(B b) {
b.setName("Test");
}
a.getB() → name : Test, age : 30
โ ์ฃผ์ํ ์
public void setCustomB(B b) {
b = new B(); // ๐ฅ ์ ๊ฐ์ฒด
b.setName("Test");
}
์ด ๊ฒฝ์ฐ `a.getB()` → name ์์(null)
์์ค ๋ถ์ํ ๋, ๋ฉ์๋๋ก ๊ฐ์ผ ๋ถ๋ถ๋ค์ด ๋ง์์ ํท๊ฐ๋ฆฌ๋๋ฐ,
์ ์ ์ด๋ ๊ฒ ํ์ด์ ๋ณด๋ ํ๋ฒ์ ์ดํด๊ฐ ์๋๋ค. ๋ฉ์๋๋ ์์ค์ ๊ฐ๋
์ฑ ๋ฐ ๊ด๋ฆฌ์ ํจ์จ์ฑ์ ์ํด์ ์ฌ์ฉํ๋ ๊ฒ๋ ์ด๋ ์ ๋ ์๋ค๊ณ ๋ณด๋๋ฐ, ์ด ๋ถ๋ถ์ ๊ณ ๋ คํ๋ฉด์ ๋ถ์์ ํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.