Java

[Java] ๊ฐ์ฒด ์ฐธ์กฐ ๋ฐฉ์‹

junnnhhh 2026. 4. 20. 22:04
728x90

๐Ÿ’ฃ ์ƒํ™ฉ

์†Œ์Šค๋กœ์ง ๋ถ„์„ ์ค‘์— ๊ฐ์ฒด ํ•„๋“œ ๊ฐ’์„ 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)

์†Œ์Šค ๋ถ„์„ํ•  ๋•Œ, ๋ฉ”์„œ๋“œ๋กœ ๊ฐ์‹ผ ๋ถ€๋ถ„๋“ค์ด ๋งŽ์•„์„œ ํ—ท๊ฐˆ๋ฆฌ๋Š”๋ฐ,
์ •์ž‘ ์ด๋ ‡๊ฒŒ ํ’€์–ด์„œ ๋ณด๋‹ˆ ํ•œ๋ฒˆ์— ์ดํ•ด๊ฐ€ ์ž˜๋œ๋‹ค. ๋ฉ”์„œ๋“œ๋Š” ์†Œ์Šค์˜ ๊ฐ€๋…์„ฑ ๋ฐ ๊ด€๋ฆฌ์˜ ํšจ์œจ์„ฑ์„ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์–ด๋А ์ •๋„ ์žˆ๋‹ค๊ณ  ๋ณด๋Š”๋ฐ, ์ด ๋ถ€๋ถ„์„ ๊ณ ๋ คํ•˜๋ฉด์„œ ๋ถ„์„์„ ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

728x90