Java ์ค์ฒฉ ํด๋์ค ์ฝ๊ฒ ์ดํดํ๊ธฐ!
์ด ์์์์๋ Java์์ ํด๋์ค ์์ ๋ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์ ์ธํ๋ '์ค์ฒฉ ํด๋์ค(Nested Class)'์ ๋ํด ์ค๋ช
ํด์. ์ค์ฒฉ ํด๋์ค์ ์ข
๋ฅ์ ์์ฑ ๋ฐฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ํน์ง์ ์ค์ต๊ณผ ํจ๊ป ์น์ ํ๊ฒ ์๋ ค์ค๋๋ค.
๋ชฉ์ฐจ
1.
2.
3.
4.
5.
6.
7.
8.
9.
์ค์ฒฉ ํด๋์ค ๊ฐ๋
์๊ฐ [00:00:01]
โข
์ค์ฒฉ ํด๋์ค๋?ํด๋์ค ์์ ๋ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์ ์ธํ๋ ๊ฒ์ ๋งํด์.
โข
์ ์ฐ๋์?ํน์ ํด๋์ค์ ์์กดํ๋ ์์ ํด๋์ค๋ฅผ ๋ฌถ์ด ๊ด๋ฆฌํ๊ธฐ ์ํด์์์.
โข
์ฉ์ด:
โฆ
๋ฐ๊นฅ ํด๋์ค = ์์ฐํฐ ํด๋์ค(Outer Class)
โฆ
์์ ์๋ ํด๋์ค = ์ด๋ ํด๋์ค(Inner Class)
์๋ฅผ ๋ค์ด, ์๋์ฐจ(Outer Class) ์์ ์์ง(Inner Class)์ ๋ฃ๋ ๊ฒ์ฒ๋ผ ์๊ฐํ ์ ์์ด์.
์ค์ฒฉ ํด๋์ค ์ข
๋ฅ์ ๋ถ๋ฅ [00:02:04]
์ค์ฒฉ ํด๋์ค๋ ํฌ๊ฒ 3๊ฐ์ง๋ก ๋๋ ์ ธ์:
1.
๋ฉค๋ฒ ํด๋์ค(Member Class)
โข
ํด๋์ค ์์ ์ ์ธ๋ ํด๋์ค
โข
๋ค์ ์ธ์คํด์ค ์ด๋ ํด๋์ค์ ์คํํฑ ์ด๋ ํด๋์ค๋ก ๋๋จ
2.
๋ก์ปฌ ํด๋์ค(Local Class)
โข
๋ฉ์๋ ์์ ์ ์ธ๋ ํด๋์ค
โข
๋ฉ์๋ ์คํ ์ค์๋ง ์กด์ฌํ๊ณ ๋ฉ์๋ ๋ฐ์์๋ ์ฌ๋ผ์ง
3.
์ต๋ช
ํด๋์ค(Anonymous Class)
โข
์ด๋ฆ ์๋ ํด๋์ค (์์์์๋ ์์ธํ ๋ค๋ฃจ์ง ์์)
์ธ์คํด์ค ์ด๋ ํด๋์ค์ ์คํํฑ ์ด๋ ํด๋์ค ์ฐจ์ด [00:03:11]
โข
์ธ์คํด์ค ์ด๋ ํด๋์ค
โฆ
๋ฐ๊นฅ ํด๋์ค ๊ฐ์ฒด๊ฐ ๋จผ์ ์์ฑ๋์ด์ผ ์ด๋ ํด๋์ค ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์์ด์.
โฆ
์ฆ, "์๋์ฐจ" ๊ฐ์ฒด๊ฐ ์์ด์ผ "์์ง" ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋ ๊ฒ๊ณผ ๊ฐ์์.
โข
์คํํฑ ์ด๋ ํด๋์ค
โฆ
๋ฐ๊นฅ ํด๋์ค ๊ฐ์ฒด ์์ด๋ ๋ฐ๋ก ์์ฑ ๊ฐ๋ฅํด์.
โฆ
ํ์ง๋ง ์ฌ์ ํ ๋ฐ๊นฅ ํด๋์ค์ ์ข
์๋์ด ์์ด์.
โฆ
์ฝ๊ฒ ๋งํด, ์๋์ฐจ ์์ด๋ ์์ง ์ค๊ณ๋๋ฅผ ๋ณผ ์ ์์ง๋ง, ์์ง์ ์๋์ฐจ์ ์ฐ๊ฒฐ๋์ด ์๋ค๋ ๋ป์ด์์.
์ค์ฒฉ ํด๋์ค ๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ [00:05:08]
โข
์ธ์คํด์ค ์ด๋ ํด๋์ค ์์ฑ ์์:
1.
์์ฐํฐ ํด๋์ค ๊ฐ์ฒด ์์ฑ
2.
์์ฐํฐ ๊ฐ์ฒด๋ฅผ ํตํด ์ด๋ ํด๋์ค ๊ฐ์ฒด ์์ฑ
โข
์คํํฑ ์ด๋ ํด๋์ค ์์ฑ:
โฆ
์์ฐํฐ ๊ฐ์ฒด ์์ด ๋ฐ๋ก ์์ฑ ๊ฐ๋ฅ
์์:
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner(); // ์ธ์คํด์ค ์ด๋ ํด๋์ค
Outer.StaticInner staticInner = new Outer.StaticInner(); // ์คํํฑ ์ด๋ ํด๋์ค
Java
๋ณต์ฌ
์ค์ต: ์ค์ฒฉ ํด๋์ค ์ฝ๋ ์์ฑ [00:06:53]
โข
์ดํด๋ฆฝ์ค์์ ์ค์ฒฉ ํด๋์ค ์์ ๋ฅผ ์ง์ ์์ฑํด๋ด์.
โข
ํด๋์ค ์์ ํด๋์ค๋ฅผ ์ ์ธํ๊ณ , ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๋ณด์ฌ์ค๋๋ค.
โข
์ค์ฒฉ ํด๋์ค๊ฐ ์ ํ์ํ์ง, ์ด๋ป๊ฒ ์ฐ๋์ง ์ค์ต์ผ๋ก ์ดํดํ ์ ์์ด์.
์์ฐํฐ ํด๋์ค์ ์ด๋ ํด๋์ค ๊ฐ ์ ๊ทผ์ฑ [00:14:24]
โข
์ด๋ ํด๋์ค๋ ์์ฐํฐ ํด๋์ค์ ๋ฉค๋ฒ(๋ณ์, ๋ฉ์๋)์ ์์ ๋กญ๊ฒ ์ ๊ทผ ๊ฐ๋ฅํด์.
โข
๋ฐ๋๋ก ์์ฐํฐ ํด๋์ค๋ ์ด๋ ํด๋์ค ๋ฉค๋ฒ์ ์ง์ ์ ๊ทผํ ์ ์์ด์.
โข
์ด๋ ์ค๊ดํธย {}ย ๋ธ๋ก ๋ฒ์์ ๋ณ์ ์๋ช
์ฃผ๊ธฐ์๋ ๊ด๋ จ๋ผ์.
โข
์๋ฅผ ๋ค์ด, ๋ฉ์๋ ์์์ ์ ์ธ๋ ๋ณ์๋ ๋ฉ์๋ ๋ฐ์์ ์ธ ์ ์๋ ๊ฒ๊ณผ ๋น์ทํด์.
๋ณ์์ ๋ฉ์๋์ ๋ฒ์ ์ดํดํ๊ธฐ [00:15:32]
โข
๋ณ์๋ ๋ฉ์๋๋ ์ ์ธ๋ ๋ธ๋ก ๋ด์์๋ง ์ ํจํด์.
โข
์ด๋ ํด๋์ค๋ ์์ ์ด ์ํ ์์ฐํฐ ํด๋์ค์ ๋ฒ์ ์์ ์์ผ๋ฏ๋ก ์์ฐํฐ ๋ฉค๋ฒ๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง, ๋ฐ๋๋ ์ ๋ผ์.
โข
์ด ๊ฐ๋
์ ์ฝ๋ ์์ฑ ์ ๋ณ์ ์ ๊ทผ ๊ถํ์ ์ดํดํ๋ ๋ฐ ์ค์ํด์.
๋ค์ํ ์ด๋ ํด๋์ค ์ค์ต ๋ฐ ์คํ ํ๋ฆ [00:17:10]
โข
์ฌ๋ฌ ์ข
๋ฅ์ ์ด๋ ํด๋์ค๋ฅผ ํ ์์ฐํฐ ํด๋์ค ์์ ๋ง๋ค์ด ์ค์ตํด์.
โข
์ธ์คํด์ค ์ด๋ ํด๋์ค, ์คํํฑ ์ด๋ ํด๋์ค, ๋ก์ปฌ ํด๋์ค ๋ชจ๋ ๋ง๋ค์ด๋ณด๊ณ ๊ฐ๊ฐ์ ๊ฐ์ฒด ์์ฑ๊ณผ ๋ฉ์๋ ํธ์ถ์ ํ์ธํด์.
โข
์คํ ๊ฒฐ๊ณผ๋ฅผ ํตํด ๊ฐ ํด๋์ค์ ํน์ง๊ณผ ์ฌ์ฉ๋ฒ์ ๋ช
ํํ ์ดํดํ ์ ์์ด์.
๋ง๋ฌด๋ฆฌ ๋ฐ ์์ฝ [00:36:22]
โข
์ค์ฒฉ ํด๋์ค๋ ํด๋์ค ๊ฐ ์์กด์ฑ์ ํํํ๊ณ , ๊ด๋ จ๋ ํด๋์ค๋ฅผ ๋ฌถ์ด ๊ด๋ฆฌํ ๋ ์ ์ฉํด์.
โข
์ธ์คํด์ค ์ด๋ ํด๋์ค๋ ์์ฐํฐ ๊ฐ์ฒด๊ฐ ์์ด์ผ ์์ฑ ๊ฐ๋ฅํ๊ณ , ์คํํฑ ์ด๋ ํด๋์ค๋ ๊ทธ๋ ์ง ์์์.
โข
๋ก์ปฌ ํด๋์ค๋ ๋ฉ์๋ ๋ด์์๋ง ์กด์ฌํ๋ฉฐ, ๋ฉ์๋๊ฐ ๋๋๋ฉด ์ฌ๋ผ์ ธ์.
โข
๋ณ์์ ๋ฉ์๋์ ๋ฒ์(์๋ช
์ฃผ๊ธฐ)๋ฅผ ์ดํดํ๋ฉด ์ค์ฒฉ ํด๋์ค ํ์ฉ์ ๋์์ด ๋ฉ๋๋ค.
์์ฝ
Java ์ค์ฒฉ ํด๋์ค๋ ํด๋์ค ์์ ํด๋์ค๋ฅผ ๋ฃ์ด ๊ด๋ จ๋ ์ฝ๋๋ฅผ ๋ฌถ๊ณ , ์์กด์ฑ์ ๋ช
ํํ ํ๋ ๋ฐฉ๋ฒ์ด์์. ํฌ๊ฒ ์ธ์คํด์ค ์ด๋ ํด๋์ค, ์คํํฑ ์ด๋ ํด๋์ค, ๋ก์ปฌ ํด๋์ค๋ก ๋๋๋ฉฐ, ๊ฐ๊ฐ ์์ฑ ๋ฐฉ๋ฒ๊ณผ ์ ๊ทผ ๊ถํ์ด ๋ฌ๋ผ์. ์ค์ต์ ํตํด ์ง์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์คํํด๋ณด๋ฉด ์ดํด๊ฐ ํจ์ฌ ์ฌ์์ง๋๋ค. ์ค์ฒฉ ํด๋์ค๋ ๋ณต์กํด ๋ณด์ด์ง๋ง, ์ ํ์ฉํ๋ฉด ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๊น๋ํ๊ฒ ๋ง๋ค ์ ์๋ ์ข์ ๋๊ตฌ๋๋๋ค!
์์ ๋ณด์๋ฉด์ ์ค์ฒฉ ํด๋์ค ์ง์ ๋ง๋ค์ด๋ณด๊ณ , ์์ฐํฐ์ ์ด๋ ํด๋์ค์ ๊ด๊ณ๋ฅผ ์์ ์ตํ๋ณด์ธ์! ๊ถ๊ธํ ์ ์์ผ๋ฉด ๋๊ธ๋ก ๋ฌผ์ด๋ด ์ฃผ์ธ์~ 