IntelliJ์์ JAVA๋ก ์ฝํ
์ค๋น๋ฅผ ํ๋ ์์ค,
Main
ํด๋์ค ๋ด๋ถ์ ์ขํ๋ฅผ ๋ํ๋ด๋ Point
ํด๋์ค๋ฅผ ์ ์ธํ์ฌ ์ฌ์ฉํ๋ค.
public class Problem8_8 {
...
class Point {
int x;
int y;
...
๊ทธ๋ฐ๋ฐ, Point
ํด๋์ค์ ๋ฐ์ค์ด ๊ทธ์ด์ ธ ์๊ธธ๋ ๋ด์ฉ์ ํ์ธํด ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๊ณ ๋ฅผ ๋ํ๋ด์๋ค.
๋์ถฉ ๐๋ด๋ถ ํด๋์ค๋ ์ ์ ํด๋์ค์ฌ์ผ ํ๋ค.
๋ผ๋๋ฐ..
์ผ๋จ ์ํค๋ ๋๋ก static
์ ๋ถ์ฌ์ฃผ๋ ๊ฒฝ๊ณ ๋ฉ์ธ์ง๋ ์ฌ๋ผ์ก๋ค.
public class Problem8_8 {
...
static class Point{
int x;
int y;
...
์ ์ฌ๊ธฐ์ ์ ์ ์ผ๋ก ์ ์ธํด์ผ ํ๋์ง ๋๋ฆ๋๋ก ์๊ฐํด ๋ณด์๋ค.
๋ด๋ถ์ ์ ์ ํด๋์ค๋ ์ธ๋ถ ํด๋์ค์ ์ ์ ์ด ์๋ ๋ฉค๋ฒ ๋ณ์์ ์ ๊ทผํ ์๊ฐ ์๋๋ฐ(์ฌ๋ฌ๋ฒ ์ ํด๋ณธ ์๋ฌ๋ฉ์ธ์ง๋ก ์์ฐ์ค๋ฝ๊ฒ ์๊ฒ ๋จ), ์ด์ฐจํผ ์ธ๋ถ ํด๋์ค์ ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ฐธ์กฐํ์ง ์์ ๊ฑฐ๋ผ๋ฉด, ์ ์ ์ผ๋ก ๋ช ์ํ๋๊ฒ ๋ซ์ง ์์๊น..? (๋ ์ด์ ๋ณ๊ฒฝํ์ง ์์ ํด๋์ค๋ฅผ
final
๋ก ์ ์ธํ๋ ๊ฒ์ฒ๋ผ)
--> ๐ฅ์์ ) ๋ด๋ถ์ ์ ์ ํด๋์ค๊ฐ ์๋๋ผ ์ ์ ๋ฉ์๋
์ฐพ์๋ณธ ๊ฒฐ๊ณผ, ๋ฉ๋ชจ๋ฆฌ(!) ์ ๊ด๋ จ์ด ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
์กฐ์์ ๋ธ๋กํฌ, ใ์ดํํฐ๋ธ ์๋ฐใ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ด ๋์จ๋ค. (์์ดํ 24)
์ ์ ๋ฉค๋ฒ ํด๋์ค์ ๋น์ ์ ๋ฉค๋ฒ ํด๋์ค์ ๊ตฌ๋ฌธ์ ์ฐจ์ด๋ ๋จ์ง
static
์ด ๋ถ์ด์๊ณ ์๊ณ ๋ฟ์ด์ง๋ง, ์๋ฏธ์ ์ฐจ์ด๋ ์์ธ๋ก ๊ฝค ํฌ๋ค. ๋น์ ์ ๋ฉค๋ฒ ํด๋์ค์ ์ธ์คํด์ค๋ ๋ฐ๊นฅ ํด๋์ค์ ์ธ์คํด์ค์ ์๋ฌต์ ์ผ๋ก ์ฐ๊ฒฐ๋๋ค. ๊ทธ๋์ ๋น์ ์ ๋ฉค๋ฒ ํด๋์ค์ ์ธ์คํด์ค ๋ฉ์๋์์ ์ ๊ทํ๋ this๋ฅผ ์ฌ์ฉํด ๋ฐ๊นฅ ์ธ์คํด์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฑฐ๋ ๋ฐ๊นฅ ์ธ์คํด์ค์ ์ฐธ์กฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค. ์ ๊ทํ๋ this๋ ํด๋์ค๋ช .this ํํ๋ก ๋ฐ๊นฅ ํด๋์ค์ ์ด๋ฆ์ ๋ช ์ํ๋ ์ฉ๋ฒ์ ๋งํ๋ค. ๋ฐ๋ผ์ ๊ฐ๋ ์ ์ค์ฒฉ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ๋ฐ๊นฅ ์ธ์คํด์ค์ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ ์ ์๋ค๋ฉด ์ ์ ๋ฉค๋ฒ ํด๋์ค๋ก ๋ง๋ค์ด์ผ ํ๋ค. ๋น์ ์ ๋ฉค๋ฒ ํด๋์ค๋ ๋ฐ๊นฅ ์ธ์คํด์ค ์์ด๋ ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋น์ ์ ๋ฉค๋ฒ ํด๋์ค์ ์ธ์คํด์ค์ ๋ฐ๊นฅ ์ธ์คํด์ค ์ฌ์ด์ ๊ด๊ณ๋ ๋ฉค๋ฒ ํด๋์ค๊ฐ ์ธ์คํด์คํ๋ ๋ ํ๋ฆฝ๋๋ฉฐ, ๋ ์ด์ ๋ณ๊ฒฝํ ์ ์๋ค. ์ด ๊ด๊ณ๋ ๋ฐ๊นฅ ํด๋์ค์ ์ธ์คํด์ค ๋ฉ์๋์์ ๋น์ ์ ๋ฉค๋ฒ ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํ ๋ ์๋์ผ๋ก ๋ง๋ค์ด์ง๋ ๊ฒ ๋ณดํต์ด์ง๋ง, ๋๋ฌผ๊ฒ๋ ์ง์ ๋ฐ๊นฅ ์ธ์คํด์ค์
ํด๋์ค.new MemberClass(args)
๋ฅผ ํธ์ถํด ์๋์ผ๋ก ๋ง๋ค๊ธฐ๋ ํ๋ค. ์์ํ ์ ์๋ฏ, ์ด ๊ด๊ณ ์ ๋ณด๋ ๋น์ ์ ๋ฉค๋ฒ ํด๋์ค์ ์ธ์คํด์ค ์์ ๋ง๋ค์ด์ ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํ๋ฉฐ, ์์ฑ ์๊ฐ๋ ๋ ๊ฑธ๋ฆฐ๋ค.
๋ฉค๋ฒ ํด๋์ค์์ ๋ฐ๊นฅ ์ธ์คํด์ค์ ์ ๊ทผํ ์ผ์ด ์๋ค๋ฉด ๋ฌด์กฐ๊ฑด static์ ๋ถ์ฌ์ ์ ์ ๋ฉค๋ฒ ํด๋์ค๋ก ๋ง๋ค์.
static
์ ์๋ตํ๋ฉด ๋ฐ๊นฅ ์ธ์คํด์ค๋ก์ ์จ์ ์ธ๋ถ ์ฐธ์กฐ๋ฅผ ๊ฐ๊ฒ ๋๋ค. ์์๋ ์๊ธฐํ๋ฏ ์ด ์ฐธ์กฐ๋ฅผ ์ ์ฅํ๋ ค๋ฉด ์๊ฐ๊ณผ ๊ณต๊ฐ์ด ์๋น๋๋ค. ๋ ์ฌ๊ฐํ ๋ฌธ์ ๋ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ๋ฐ๊นฅ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์๊ฑฐํ์ง ๋ชปํ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์๊ธธ ์ ์๋ค๋ ์ ์ด๋ค. ์ฐธ์กฐ๊ฐ ๋์ ๋ณด์ด์ง ์์ผ๋ ๋ฌธ์ ์ ์์ธ์ ์ฐพ๊ธฐ ์ด๋ ค์ ๋๋๋ก ์ฌ๊ฐํ ์ํฉ์ ์ด๋ํ๊ธฐ๋ ํ๋ค.
๋ด๋ถ ํด๋์ค์์ static
์ ์ฌ์ฉํ์ง ์์ผ๋ฉด, ์ธ๋ถ ํด๋์ค๋ก์ ์จ์ ์ฐธ์กฐ๊ฐ ์ ์ฅ์ด ๋๋๋ฐ, ์ด ๋ ์ฌ์ง์ด ๋ด๋ถ ํด๋์ค -> ์ธ๋ถ ํด๋์ค
์ฒ๋ผ ์ ๊ทผํ ํ์๊ฐ ์์ผ๋ฉด ์ด ์ฐธ์กฐ๋ ์ธ๋ชจ๊ฐ ์๊ณ , ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ก ์ด์ด์ง๊ฒ ๋๋ค. (์ด๋ ์จ์ ์ฐธ์กฐ๋ ๋ด๋ถ ํด๋์ค์ ์ธ์คํด์ค์ ์ ์ฅ์ด ๋๋ค.)
๋ํ, GC ๊ฐ ์ด ์จ์ ์ฐธ์กฐ๋ฅผ ์ฐพ์ง ๋ชปํ์ฌ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ฅผ ํ์ง ๋ชปํด ๋ฉ๋ชจ๋ฆฌ ๋์(!)๊ฐ ๋ฐ์ํ ์๋ ์๋ค.
ํญ์ ์๋ณด๊ณ ์์ต๋๋ค ใ ใ