1. ์์ฑ: getter ๋ฐ setter
์์ญ ๋ช ์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋์์ ๋๊ท๋ชจ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ ๋ ํด๋์ค ํ๋์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ฉด ๋ฌธ์ ๊ฐ ์์ฃผ ๋ฐ์ํฉ๋๋ค.
์ฌ๋๋ค์ด ์์ ๋ฌธ์๋ฅผ ์์ธํ ๊ณต๋ถํ์ง ๋ชปํ๊ฑฐ๋ ๋ชจ๋ ์ฌ๋ก๋ฅผ ์ค๋ช ํ์ง ์์ ์๋ ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ์ฒด์ ๋ด๋ถ ๋ฐ์ดํฐ๊ฐ "์์"๋์ด ๊ฐ์ฒด๊ฐ ๋ฌดํจํ๋๋ ์ํฉ์ด ์์ฃผ ๋ฐ์ํฉ๋๋ค.
์ด๋ฌํ ์ํฉ์ ํผํ๊ธฐ ์ํด Java์์ ๋ชจ๋ ํด๋์ค ํ๋๋ฅผ ๋น๊ณต๊ฐ๋ก ๋ง๋๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค . ํด๋์ค์ ๋ฉ์๋๋ง ํด๋์ค์ ๋ณ์๋ฅผ ์์ ํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ํด๋์ค์ ๋ฉ์๋๋ ๋ณ์์ ์ง์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
๋ค๋ฅธ ํด๋์ค๊ฐ ํด๋์ค์ ๊ฐ์ฒด ๋ด๋ถ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์๋๋ก ํ๋ ค๋ฉด ํด๋์ค์ get ๋ฉ์๋์ set ๋ฉ์๋๋ผ๋ ๋ ๊ฐ์ง ๋ฉ์๋๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์:
์ํธ | ๋ฉ๋ชจ |
---|---|
|
private ์ด๋ฆ ํ๋ ์์ฑ์๋ฅผ ํตํ ํ๋ ์ด๊ธฐํ getName() โ ์ด ๋ฉ์๋๋ ์ด๋ฆ ํ๋์ ๊ฐ์ ๋ฐํํฉ๋๋ค setName() โ ์ด ๋ฉ์๋๋ ์ด๋ฆ ํ๋์ ๊ฐ์ ๋ณ๊ฒฝํฉ๋๋ค |
๋ค๋ฅธ ํด๋์ค๋ ์ด๋ฆ ํ๋์ ๊ฐ์ ์ง์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. getName()
๋๊ตฐ๊ฐ ์ด๋ฆ ํ๋์ ๊ฐ์ ๊ฐ์ ธ์์ผ ํ๋ ๊ฒฝ์ฐ ๊ฐ์ฒด ์์ ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค Person
. setName()
์ผ๋ถ ์ฝ๋๊ฐ ์ด๋ฆ ํ๋์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ค๋ ๊ฒฝ์ฐ ๊ฐ์ฒด ์์ ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค Person
.
์ด ๋ฉ์๋๋ " ์ด๋ฆ ํ๋์ ๋ํ gettergetName()
" ๋ผ๊ณ ๋ ํ๋ฉฐ ์ด ๋ฉ์๋๋ " ์ด๋ฆ ํ๋์ ๋ํ setter " ๋ผ๊ณ ํฉ๋๋ค .setName()
์ด๊ฒ์ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์์
๋๋ค. ๋ชจ๋ Java ์ฝ๋์ 80-90%์์๋ ํด๋์ค์์ ๊ณต์ฉ ๋ณ์๋ฅผ ๋ณผ ์ ์์ต๋๋ค. private
๋์ ์ ์ธ (๋๋ ) ๋๋ฉฐ protected
๊ฐ ๋ณ์์๋ ๊ณต๊ฐ getter ๋ฐ setter๊ฐ ์์ต๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ฝ๋๋ฅผ ๋ ๊ธธ์ง๋ง ๋ ์์ ์ ์ผ๋ก ๋ง๋ญ๋๋ค.
ํด๋์ค ๋ณ์์ ์ง์ ์ก์ธ์คํ๋ ๊ฒ์ ์ด์ค ๋ ธ๋์ ์ ์ ํตํด ์๋์ฐจ๋ฅผ ๋๋ฆฌ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค . ๋ ์ฝ๊ณ ๋น ๋ฅด์ง๋ง ๋ชจ๋ ์ฌ๋์ด ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ์ฌ๋์๊ฒ ์ํฉ์ด ์ ํ๋ฉ๋๋ค.
x
์ ( , ) ์ ์ค๋ช
ํ๋ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค y
. ์ด๋ณด์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
class Point
{
public int x;
public int y;
}
์๋ จ๋ Java ํ๋ก๊ทธ๋๋จธ๊ฐ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ํธ |
---|
|
์ฝ๋๊ฐ ๋ ๊ธด๊ฐ์? ์์ฌํ ์ฌ์ง ์์ด.
๊ทธ๋ฌ๋ getter ๋ฐ setter์ ๋งค๊ฐ๋ณ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. x
์๋ฅผ ๋ค์ด ๋ฐ ๊ฐ y
ํญ์ 0๋ณด๋ค ํฐ์ง(๋๋ 0๋ณด๋ค ์์ง ์์์ง) ํ์ธํ ์ ์์ต๋๋ค . ์:
์ํธ | ๋ฉ๋ชจ |
---|---|
|
2. ๊ฐ์ฒด ์๋ช
์ฐ์ฐ์ ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค๋ ๊ฒ์ ์ด๋ฏธ ์๊ณ new
์์ง๋ง ๊ฐ์ฒด๋ ์ด๋ป๊ฒ ์ญ์ ๋ฉ๋๊น? ๊ทธ๋ค์ ์์ํ ์กด์ฌํ์ง ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค.
C++์ ๊ฐ์ ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์๋ ๊ฐ์ฒด๋ฅผ ์ญ์ ํ๊ธฐ ์ํ ํน์ ์ฐ์ฐ์๊ฐ ์์ต๋๋ค delete
. ๊ทธ๋ฌ๋ ์ด๊ฒ์ Java์์ ์ด๋ป๊ฒ ์๋ํฉ๋๊น?
Java์์๋ ๋ชจ๋ ๊ฒ์ด ์ฝ๊ฐ ๋ค๋ฅด๊ฒ ๋ฐฐ์ด๋ฉ๋๋ค. Java์๋ ์ญ์ ์ฐ์ฐ์๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ๊ฐ์ฒด๊ฐ Java์์ ์ญ์ ๋์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๊น? ์๋์, ๋ฌผ๋ก ์ญ์ ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Java ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋น ๋ฅด๊ฒ ๋ถ์กฑํด์ง๊ณ ๋ช ๋ฌ ๋์ ์ค๋จ ์์ด ์คํ๋๋ ํ๋ก๊ทธ๋จ์ ๋ํ ์ด์ผ๊ธฐ๊ฐ ์์ ๊ฒ์ ๋๋ค.
Java์์๋ ๊ฐ์ฒด ์ญ์ ๊ฐ ์์ ํ ์๋ํ๋ฉ๋๋ค. Java ์์คํ ์์ฒด์์ ๊ฐ์ฒด ์ญ์ ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ฅผ ๊ฐ๋น์ง ์์ง์ด๋ผ๊ณ ํ๋ฉฐ, ๊ฐ๋น์ง๋ฅผ ์์งํ๋ ๋ฉ์ปค๋์ฆ์ ๊ฐ๋น์ง ์์ง๊ธฐ ( GC ) ๋ผ๊ณ ํฉ๋๋ค .
๊ทธ๋ ๋ค๋ฉด ์๋ฐ ๋จธ์ ์ ์ธ์ ๊ฐ์ฒด๋ฅผ ์ญ์ ํด์ผ ํ๋์ง ์ด๋ป๊ฒ ์ ์ ์์๊น์?
๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ "๋๋ฌ ๊ฐ๋ฅ"๊ณผ "๋๋ฌ ๋ถ๊ฐ"๋ก ๋๋๋๋ค. ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๊ฐ ํ๋ ์ด์ ์์ผ๋ฉด ๋๋ฌ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๋ณ์๊ฐ ์์ผ๋ฉด ํด๋น ๊ฐ์ฒด๋ ๋๋ฌํ ์ ์๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๊ณ ์ญ์ ํ ์ ์์์ ์๋ฏธํ๋ ์ฐ๋ ๊ธฐ๋ก ์ ์ธ๋ฉ๋๋ค.
Java์์๋ ๊ธฐ์กด ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ ์ฐธ์กฐ๋ง ํ ๋นํ ์ ์์ต๋๋ค. ๊ฐ์ฒด์ ๋ํ ๋ชจ๋ ์ฐธ์กฐ๋ฅผ ์ง์ฐ๋ฉด ์์ํ ์์ค๋ฉ๋๋ค.
์ํ ์ฐธ์กฐ
๊ทธ ๋ ผ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ๋จํ ๋ฐ๋ก์ ๋๋ฌํ ๋๊น์ง ํ๋ฅญํ๊ฒ ๋ค๋ฆฝ๋๋ค: ์๋ก๋ฅผ ์ฐธ์กฐํ๋ ๋ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค(์๋ก์ ๋ํ ์ฐธ์กฐ ์ ์ฅ). ๋ค๋ฅธ ๊ฐ์ฒด๋ ์ด๋ฌํ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์ฅํ์ง ์์ต๋๋ค.
์ด๋ฌํ ๊ฐ์ฒด๋ ์ฝ๋์์ ์ก์ธ์คํ ์ ์์ง๋ง ์ฌ์ ํ ์ฐธ์กฐ๋ฉ๋๋ค.
์ด๊ฒ์ด ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ๊ฐ์ฒด๋ฅผ "์ฐธ์กฐ๋" ๊ฐ์ฒด์ "์ฐธ์กฐ๋์ง ์์ ๊ฐ์ฒด"๊ฐ ์๋ ๋๋ฌ ๊ฐ๋ฅํ ๊ฐ์ฒด์ ๋๋ฌ ๋ถ๊ฐ๋ฅํ ๊ฐ์ฒด๋ก ๋๋๋ ์ด์ ์ ๋๋ค.
๋๋ฌ ๊ฐ๋ฅํ ๊ฐ์ฒด
๋จผ์ 100% ์ด์ ์๋ ๊ฐ์ฒด๋ฅผ ๋๋ฌ ๊ฐ๋ฅํ ๋ชฉ๋ก์ ์ถ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ฌ ์ค๋ ๋( Thread.current()
) ๋๋ ์ฝ์ InputStream( System.in
).
๊ทธ๋ฐ ๋ค์ ์ฐ๊ฒฐ ๊ฐ๋ฅํ ๊ฐ์ฒด ๋ชฉ๋ก์ด ํ์ฅ๋์ด ์ด๊ธฐ ์ฐ๊ฒฐ ๊ฐ๋ฅํ ๊ฐ์ฒด ์งํฉ์์ ์ฐธ์กฐํ๋ ๊ฐ์ฒด๋ฅผ ํฌํจํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด ํ์ฅ๋ ์งํฉ์์ ์ฐธ์กฐํ๋ ๊ฐ์ฒด๋ฅผ ํฌํจํ๋๋ก ๋ค์ ํ์ฅ๋ฉ๋๋ค.
์ฆ, ์๋ก ์ฐธ์กฐ๋ง ํ๋ ๊ฐ์ฒด๊ฐ ์์ง๋ง ๋๋ฌ ๊ฐ๋ฅํ ๊ฐ์ฒด์์ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒฝ์ฐ ํด๋น ๊ฐ์ฒด๋ ๊ฐ๋น์ง๋ก ๊ฐ์ฃผ๋์ด ์ญ์ ๋ฉ๋๋ค.
3. ์ฐ๋ ๊ธฐ ์๊ฑฐ
๋ฉ๋ชจ๋ฆฌ ๋จํธํ
๊ฐ์ฒด ์ญ์ ์ ๊ด๋ จ๋ ๋ ๋ค๋ฅธ ์ค์ํ ์ ์ ๋ฉ๋ชจ๋ฆฌ ์กฐ๊ฐํ์ ๋๋ค. ์ง์์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ์ญ์ ํ๋ฉด ๊ณง ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฌํ๊ฒ ์กฐ๊ฐํ๋ฉ๋๋ค. ์ ์ ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ๊ณผ ๋น์ด ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ์ฐ์ฌํด ์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ํฐ ๊ฐ์ฒด(์: ๋ฐฑ๋ง ๊ฐ์ ์์๊ฐ ์๋ ๋ฐฐ์ด)๋ฅผ ๋ง๋ค ์ ์๋ ์ํฉ์ ์ฝ๊ฒ ๋น ์ง ์ ์์ต๋๋ค. ์ฆ, ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ง๋๋ผ๋ ์ฐ์์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ด ํฌ์ง ์์ ์ ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ต์ ํ(์กฐ๊ฐ ๋ชจ์)
Java ๋จธ์ ์ ํน์ ๋ฐฉ์์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ ๋๋ค.
๋ฉ๋ชจ๋ฆฌ๋ ๋ ๋ถ๋ถ์ผ๋ก ๋๋ฉ๋๋ค. ๋ชจ๋ ๊ฐ์ฒด๋ ์ ๋ฐ์ ๋ฉ๋ชจ๋ฆฌ์์๋ง ์์ฑ(๋ฐ ์ญ์ )๋ฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ๊ตฌ๋ฉ์ ์ ๋ฆฌํ ์๊ฐ์ด ๋๋ฉด ์ ๋ฐ๋ถ์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ํ๋ฐ๋ถ์ ๋ณต์ฌ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ๊ตฌ๋ฉ์ด ์๋๋ก ์๋ก ๋ฐ๋ก ์์ ๋ณต์ฌ๋ฉ๋๋ค.
ํ๋ก์ธ์ค๋ ๋๋ต ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1๋จ๊ณ: ๊ฐ์ฒด ์์ฑ ํ
2๋จ๊ณ: "๊ตฌ๋ฉ" ๋ชจ์
3๋จ๊ณ: "๊ตฌ๋ฉ" ์ ๊ฑฐ
๋ฐ๋ผ์ ๊ฐ์ฒด๋ฅผ ์ญ์ ํ ํ์๊ฐ ์์ต๋๋ค. Java ๋จธ์ ์ ๋๋ฌ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์ ์์น์ ๋ณต์ฌํ๊ณ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋์๋ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํด์ ํฉ๋๋ค.