Search

Java ์ค‘์ฒฉ ํด๋ž˜์Šค

Java ์ค‘์ฒฉ ํด๋ž˜์Šค ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ!

์ด ์˜์ƒ์—์„œ๋Š” Java์—์„œ ํด๋ž˜์Šค ์•ˆ์— ๋˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•˜๋Š” '์ค‘์ฒฉ ํด๋ž˜์Šค(Nested Class)'์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์š”. ์ค‘์ฒฉ ํด๋ž˜์Šค์˜ ์ข…๋ฅ˜์™€ ์ƒ์„ฑ ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ ํŠน์ง•์„ ์‹ค์Šต๊ณผ ํ•จ๊ป˜ ์นœ์ ˆํ•˜๊ฒŒ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

๋ชฉ์ฐจ

1.
์ค‘์ฒฉ ํด๋ž˜์Šค ๊ฐœ๋… ์†Œ๊ฐœ [00:00:01]
2.
์ค‘์ฒฉ ํด๋ž˜์Šค ์ข…๋ฅ˜์™€ ๋ถ„๋ฅ˜ [00:02:04]
3.
์ธ์Šคํ„ด์Šค ์ด๋„ˆ ํด๋ž˜์Šค์™€ ์Šคํƒœํ‹ฑ ์ด๋„ˆ ํด๋ž˜์Šค ์ฐจ์ด [00:03:11]
4.
์ค‘์ฒฉ ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ• [00:05:08]
5.
์‹ค์Šต: ์ค‘์ฒฉ ํด๋ž˜์Šค ์ฝ”๋“œ ์ž‘์„ฑ [00:06:53]
6.
์•„์šฐํ„ฐ ํด๋ž˜์Šค์™€ ์ด๋„ˆ ํด๋ž˜์Šค ๊ฐ„ ์ ‘๊ทผ์„ฑ [00:14:24]
7.
๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ์˜ ๋ฒ”์œ„ ์ดํ•ดํ•˜๊ธฐ [00:15:32]
8.
๋‹ค์–‘ํ•œ ์ด๋„ˆ ํด๋ž˜์Šค ์‹ค์Šต ๋ฐ ์‹คํ–‰ ํ๋ฆ„ [00:17:10]
9.
๋งˆ๋ฌด๋ฆฌ ๋ฐ ์š”์•ฝ [00:36:22]

์ค‘์ฒฉ ํด๋ž˜์Šค ๊ฐœ๋… ์†Œ๊ฐœ [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 ์ค‘์ฒฉ ํด๋ž˜์Šค๋Š” ํด๋ž˜์Šค ์•ˆ์— ํด๋ž˜์Šค๋ฅผ ๋„ฃ์–ด ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ๋ฌถ๊ณ , ์˜์กด์„ฑ์„ ๋ช…ํ™•ํžˆ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—์š”. ํฌ๊ฒŒ ์ธ์Šคํ„ด์Šค ์ด๋„ˆ ํด๋ž˜์Šค, ์Šคํƒœํ‹ฑ ์ด๋„ˆ ํด๋ž˜์Šค, ๋กœ์ปฌ ํด๋ž˜์Šค๋กœ ๋‚˜๋‰˜๋ฉฐ, ๊ฐ๊ฐ ์ƒ์„ฑ ๋ฐฉ๋ฒ•๊ณผ ์ ‘๊ทผ ๊ถŒํ•œ์ด ๋‹ฌ๋ผ์š”. ์‹ค์Šต์„ ํ†ตํ•ด ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•ด๋ณด๋ฉด ์ดํ•ด๊ฐ€ ํ›จ์”ฌ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ์ค‘์ฒฉ ํด๋ž˜์Šค๋Š” ๋ณต์žกํ•ด ๋ณด์ด์ง€๋งŒ, ์ž˜ ํ™œ์šฉํ•˜๋ฉด ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๋„๊ตฌ๋ž๋‹ˆ๋‹ค!
์˜์ƒ ๋ณด์‹œ๋ฉด์„œ ์ค‘์ฒฉ ํด๋ž˜์Šค ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๊ณ , ์•„์šฐํ„ฐ์™€ ์ด๋„ˆ ํด๋ž˜์Šค์˜ ๊ด€๊ณ„๋ฅผ ์†์— ์ตํ˜€๋ณด์„ธ์š”! ๊ถ๊ธˆํ•œ ์  ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ๋ฌผ์–ด๋ด ์ฃผ์„ธ์š”~