๊ตญ๋น์ง์ D+70
- Nested Class -
Nested Class
ํด๋์ค๋ฅผ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋๋ค๋ฉด Outer Class์ Nested Class๊ฐ ์๋ค.
Outer Class๋ ์ฐ๋ฆฌ๊ฐ ํ์์ ๋ฐฐ์์๋ ํด๋์ค๋ฅผ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ์ ์ผ๋ก ์์์ผํ ๊ฒ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ฒ์ Nested Class์ ๋ํด ํ์ตํ๊ณ ์ดํดํ๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๋๋ก ํ๋ค.
• Nested Class์ ์ฌ์ฉ ๋ชฉ์
- ์ธ๋ถ๋ก๋ถํฐ ํด๋์ค์ ์ ์(์กด์ฌ ์์ฒด)๋ฅผ ๊ฐ์ถ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
- ๋ด๋ถ์ ์ผ๋ก ๊ตฌ์กฐ๊ฐ ๋ฐ๋์ด๋ ์ฌ์ฉ์์๊ฒ ์ํฅ์ด ๊ฐ์ง ์๋๋ค.
- ์ฌ์ฉ์๊ฐ ๋ณด๊ธฐ ํธํ๋ค. (๋ณด๊ธฐ ํธํ๋ค๋ ๋ง์ ๊ด์ฌ์ด ์๋ค๋ ์๋ฏธํ๊ณ ๋ ๋ค๋ฅด๋ค.)
• Nested Class
class Outer // Outer Class
{
class Nested // Nested Class
{
...
}
}
Nested Class๋ ํด๋์ค์์ ์กด์ฌํ๋ ํด๋์ค๋ฅผ ์๋ฏธํ๋ค.
์ ํ
- Static Nested Class
- Non-static Nested Class (Inner Class)
Nested Class๋ ๋จผ์ ์ ์ญํํ ํด๋์ค์ ๊ทธ๋ ์ง์์ ํด๋์ค 2๊ฐ๋ก ๊ตฌ๋ถ๋๋ค.
• Static Nested Class
class Outer
{
private static int num = 0;
static class StaticNested
{
...
}
}
public class Main
{
public static void main(String[] args)
{
// ๊ฐ์ฒด์์ฑ
Outer.StaticNested ns = new Outer.StaticNested();
}
}
Static Nested Class๋ ์๋ฏธ๊ทธ๋๋ก ์ ์ญํํ ํด๋์ค๋ฅผ ๋ํ๋ด๋ฉฐ Global ์์ญ์ ์ธ์คํด์ค๋ฅผ ํ ๋นํ๋ ํด๋์ค๋ฅผ ์๋ฏธํ๋ค.
์์ฑ
Outer ํด๋์ค์ ์ธ์คํด์ค ์์ฑ๊ณผ ๋ฌด๊ดํ๋ฉฐ, ๋ณ๋๋ก ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋ค.
ํ์ฉ
Outer ํด๋์ค์ static ๋ณ์๋ฅผ ์ ๊ทผํ ์ ์๋ค.
Outer ํด๋์ค์ static ๋ณ์๋ฅผ ๊ณต์ ํ๋ค.
โก๏ธ static ๋ณ์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ์ง๋ง, Outer์ ์ผ๋ฐ๋ณ์๋ static Nested class์์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค.
• Inner Class
- Member (Inner) Class
- Local (Inner) Class
- Anonymous (Inner) Class
๋ค์คํฐ๋ ํด๋์ค์ค์์ static์ด ๋ถ์ง ์๋ non-static nested class๋ฅผ ๋ถ๋ฅด๋๋ง์ด๋ฉฐ, Inner Class์๋ ์ธ ์ข ๋ฅ๊ฐ ์๋ค.
๊ฐ ํด๋์ค๋ ์ ์๋์ด ์๋ ์์น์ ๋ฐ๋ผ ์ด๋ฆ์ ๋ค๋ฅด๊ฒ ๋ถ๋ฅธ๋ค.
• Inner Class - Member (Inner) Class
class Outer
{
class MemberInner // Member Inner Class
{
...
}
}
Outer Class์ ํ์์ ์ง์ ์ ์ผ๋ก ์ํด์๋ ํด๋์ค๋ฅผ ๋ํ๋ธ๋ค.
• Inner Class - Local (Inner) Class
class Outer
{
void MyMethod()
{
class LocalInner // Local Inner Class
{
...
}
}
}
Outer Class์ ๋ฉ์๋์์ ์ํด์๋ ํด๋์ค๋ฅผ ๋ํ๋ธ๋ค.
• Inner Class - Anonymous Inner Class
class Outer
{
String MyMethod()
{
return new ์ธํฐํ์ด์ค()
{
...
};
}
}
ํด๋์ค๋ช ์ ์ง์ ์ ์ผ๋ก ์ฌ์ฉํ์ง ์๋ ํด๋์ค๋ก Local Inner Class์ ํฌํจ๋๋ ์์ญ์ด๋ผ๊ณ ํ ์ ์๋ค.
Anonymous Inner Class๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ธํฐํ์ด์ค๊ฐ ์์ด์ผํ๋ฉฐ, ์ด๋ ์ธํฐํ์ด์ค๋ด์ ๋ฉ์๋๊ฐ 1๊ฐ๊ฐ ์์ด์ผ ์ฌ์ฉํ ์ ์๋ค.
๋๊ธ