Java ์ค์ฒฉ ์ธํฐํ์ด์ค & ์ฝ๋ฉ ์์ ์์ฝ
์ด ์์์ Java์์ย ์ค์ฒฉ ์ธํฐํ์ด์ค๊ฐ ๋ฌด์์ธ์ง, ์ด๋ป๊ฒ ์ ์ธํ๊ณ ์ฌ์ฉํ๋์ง ์ฝ๊ฒ ์ค๋ช
ํด์ฃผ๊ณ ์ค์ต ์์ ๊น์ง ๋ณด์ฌ์ค๋๋ค. ์ค์ฒฉ ์ธํฐํ์ด์ค๋ ํด๋์ค ์์ ์ ์ธ๋ ์ธํฐํ์ด์ค๋ก, ๋ณดํต ์คํํฑ(์ ์ )์ผ๋ก ์กด์ฌํ๋ฉฐ, ์ด๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ๊ณผ ํ์ฉ๋ฒ์ ๋จ๊ณ๋ณ๋ก ์๋ ค์ค๋๋ค.
๋ชฉ์ฐจ
1.
2.
3.
4.
5.
6.
7.
์ค์ฒฉ ์ธํฐํ์ด์ค ๊ฐ๋
์๊ฐ [00:00:02]
โข
์ค์ฒฉ ์ธํฐํ์ด์ค๋?
ํด๋์ค ๋ด๋ถ์ ์ ์ธ๋ ์ธํฐํ์ด์ค๋ฅผ ๋งํด์.
์๋ฅผ ๋ค์ด, ํด๋์ค ์์ ๋ ๋ค๋ฅธ ์ธํฐํ์ด์ค๊ฐ ๋ค์ด์๋ ๊ตฌ์กฐ์
๋๋ค.
โข
์ค์ฒฉ ํด๋์ค์ ๋น์ทํ์ง๋ง,
์ค์ฒฉ ํด๋์ค๋ ํด๋์ค ์์ ํด๋์ค๊ฐ ์๋ ๊ฒ์ด๊ณ ,
์ค์ฒฉ ์ธํฐํ์ด์ค๋ ํด๋์ค ์์ ์ธํฐํ์ด์ค๊ฐ ์๋ ๊ฑฐ์์.
์ค์ฒฉ ์ธํฐํ์ด์ค ์ ์ธ๊ณผ ํน์ง [00:00:25]
โข
์ค์ฒฉ ์ธํฐํ์ด์ค๋ย ์คํํฑ ์ด๋ ์ธํฐํ์ด์ค๋ก๋ง ์กด์ฌํด์.
์ฆ, ๋ด๋ถ์ ์ ์ธ๋ ์ธํฐํ์ด์ค๋ ์๋์ผ๋ก static์ด ๋ถ๋๋ค๊ณ ์๊ฐํ๋ฉด ๋ผ์.
โข
๊ทธ๋์ ๋ณ๋๋กย staticย ํค์๋๋ฅผ ๋ถ์ด์ง ์์๋ ๋ฉ๋๋ค.
โข
์ ๊ทผํ ๋๋ ์ธ๋ถ ํด๋์ค ์ด๋ฆ์ ๋จผ์ ์ฐ๊ณ , ๊ทธ ๋ค์์ ์ธํฐํ์ด์ค ์ด๋ฆ์ ์จ์ผ ํด์.
์)ย OuterClass.InnerInterface
๊ตฌํ ํด๋์ค์์ ์ค์ฒฉ ์ธํฐํ์ด์ค ์ฌ์ฉํ๊ธฐ [00:02:02]
โข
์ค์ฒฉ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ค๋ฉด,
๊ตฌํ ํด๋์ค์์ย OuterClass.InnerInterface๋ฅผ ๋ช
์ํด์ ๊ตฌํํด์ผ ํด์.
โข
์๋ฅผ ๋ค์ด,
class A {
interface B {
void method();
}
}
class C implements A.B {
public void method() {
// ๊ตฌํ ๋ด์ฉ
}
}
Java
๋ณต์ฌ
โข
์ด๋ ๊ฒ ๊ตฌํ ํด๋์คย C๊ฐ ์ค์ฒฉ ์ธํฐํ์ด์คย B๋ฅผ ๊ตฌํํฉ๋๋ค.
์ค์ต: ์ดํด๋ฆฝ์ค์์ ์ค์ฒฉ ์ธํฐํ์ด์ค ์ฝ๋ฉ [00:02:36]
โข
์ค์ ๋ก ์ดํด๋ฆฝ์ค์์ ํจํค์ง์ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ,
ํด๋์ค ์์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ธํ๋ ๊ณผ์ ์ ๋ณด์ฌ์ค๋๋ค.
โข
์ค์ฒฉ ์ธํฐํ์ด์คย J๋ฅผ ๋ง๋ค๊ณ ,
์ด๋ฅผ ๊ตฌํํ๋ ํด๋์คย K๋ฅผ ์์ฑํ๋ ์ค์ต์ ์งํํด์.
์ค์ฒฉ ์ธํฐํ์ด์ค ๊ตฌํ ํด๋์ค ์์ฑํ๊ธฐ [00:06:14]
โข
์ธํฐํ์ด์คย Jย ์์๋ ์ถ์ ๋ฉ์๋ย A(),ย B()๊ฐ ์๊ณ ,
ํด๋์คย K์์ ์ด ๋ฉ์๋๋ค์ ์ค๋ฒ๋ผ์ด๋ฉํด์ ๊ตฌํํฉ๋๋ค.
โข
๊ตฌํ ํด๋์ค์์ ๋ฉ์๋๋ฅผ ์์ฑํ๋ ๊ณผ์ ๊ณผ,
์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ์ค๋ฒ๋ผ์ด๋ฉ ๋ฉ์๋๋ฅผ ์์ฑํด์ฃผ๋ ๋ชจ์ต๋ ๋ณด์ฌ์ค์.
๋ฉ์ธ ๋ฉ์๋์์ ๊ฐ์ฒด ์์ฑ ๋ฐ ํธ์ถ [00:07:59]
โข
Kย ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ,
Jย ํ์
์ผ๋ก ์ฐธ์กฐํด์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ์์ ๋ฅผ ๋ง๋ญ๋๋ค.
โข
์ค์ฒฉ ์ธํฐํ์ด์ค๊ฐ ์ธ๋ถ ํด๋์ค์ ์ข
์๋๊ธฐ ๋๋ฌธ์,
OuterClass.InnerInterfaceย ํํ๋ก ์ ๊ทผํ๋ ์ ์ ๋ค์ ๊ฐ์กฐํด์.
โข
์ค์ ๋ก ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด,
๊ตฌํํย Kย ํด๋์ค์ ๋ฉ์๋๊ฐ ์คํ๋๋ ๊ฒ์ ํ์ธํฉ๋๋ค.
์ค์ฒฉ ์ธํฐํ์ด์ค ํ์ฉ ๊ตฌ์กฐ ์ ๋ฆฌ [00:11:16]
โข
์ค์ฒฉ ์ธํฐํ์ด์ค๋ฅผ ๋ค๋ฅธ ํด๋์ค๊ฐ ๊ตฌํํ๊ณ ,
๊ทธ ๊ตฌํ ๊ฐ์ฒด๋ฅผ ์ธํฐํ์ด์ค ํ์
์ผ๋ก ๋ฐ์์ ์ฌ์ฉํ๋ ๊ตฌ์กฐ๋ฅผ ์ ๋ฆฌํด์ค๋๋ค.
โข
์ด๋ฐ ๊ตฌ์กฐ๋ ๋ณต์กํด ๋ณด์ผ ์ ์์ง๋ง,
ํน์ ์ํฉ์์ ์ฝ๋์ ์์ง๋๋ฅผ ๋์ด๊ณ , ๊ด๋ จ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ทธ๋ฃนํํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
๋ง๋ฌด๋ฆฌ ์์ฝ
Java ์ค์ฒฉ ์ธํฐํ์ด์ค๋ย ํด๋์ค ๋ด๋ถ์ ์ ์ธ๋ ์ธํฐํ์ด์ค๋ก, ์๋์ผ๋กย staticย ํน์ฑ์ ๊ฐ์ง๋ฉฐ, ์ธ๋ถ ํด๋์ค ์ด๋ฆ์ ํตํด ์ ๊ทผํฉ๋๋ค. ์ด๋ฅผ ๊ตฌํํ๋ ํด๋์ค๋ย OuterClass.InnerInterfaceย ํํ๋ก ์ธํฐํ์ด์ค๋ฅผ ๋ช
์ํ๊ณ , ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํด์ ์ฌ์ฉํฉ๋๋ค. ์์์์๋ ๊ฐ๋
์ค๋ช
๋ถํฐ ์ค์ต, ๊ฐ์ฒด ์์ฑ๊ณผ ๋ฉ์๋ ํธ์ถ๊น์ง ๋จ๊ณ๋ณ๋ก ์ฝ๊ฒ ์๋ ค์ฃผ์ด, ์ค์ฒฉ ์ธํฐํ์ด์ค์ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ํ์ฉ๋ฒ์ ํ์คํ ์ดํดํ ์ ์์ต๋๋ค. ์ค์ฒฉ ์ธํฐํ์ด์ค๋ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๊น๋ํ๊ฒ ์ ์งํ๊ณ ๊ด๋ จ ๊ธฐ๋ฅ์ ๋ฌถ์ ๋ ์ ์ฉํ ๊ธฐ๋ฒ์ด์์!
๊ถ๊ธํ ์ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์! ์ฆ๊ฑฐ์ด ์ฝ๋ฉ ๋์ธ์~ 