Java์์์ Nested Class๋ฅผ ์์๋ณด๋ฉฐ, ์ด๋ป๊ฒ ๋ณํํด ์์์ง ํ๋ฒ ์๊ฐํด๋ณด์.
Nested Class
- ํด๋์ค ์์ ๋ค๋ฅธ ํด๋์ค
- Java์์๋ ๋๋ก ๋๋๋ค.
- Inner Class
- non-static Nested Class
- Local Class
- Anonymous Class
- static Nested Class
- Inner Class
Inner Class
non-static Nested Class
InnerClass
๋static
๋ฉค๋ฒ๋ฅผ ์ ์ธํ ์ ์๋ค.InnerClass
๋OuterClass
์ธ์คํด์ค์ ํจ๊ป OuterClass์ ๋ด๋ถ์ ์กด์ฌํ๋ค.OuterClass
์ ๋ชจ๋ ๋ณ์์ ์ ๊ทผํ ์ ์๋ค.- ๊ทธ๋ฌ๋ฉด์ ๋ค๋ฅธ ํด๋์ค์๋ ์ ๊ทผ ๋ถ๊ฐ == ๊ฐํ ์บก์ํ
- ์๋ฌต์ ์ผ๋ก
OuterClass
์ธ์คํด์ค์ ์ฐ๊ฒฐ๋์ด ์๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์
InnerClass
์์ฑ์ ์ํด์๋ ๋จผ์ ์ธ๋ถ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ค.- ์ฆ, ์ธ์คํด์ค๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ ์ ์๋ค.
- ์์กด์ฑ์ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋์์ ์ํ์ด ์๋ค.
์๋นํ ๊ดด๋ํ ๋ฌธ๋ฒ์ด๋ค.
Local Class
- Block์ ์ ์๋ ํด๋์ค
- Block: ์ฌ๋ฌ statements๋ฅผ ๊ฐ์ฌ๊ณ ์๋ ํ๋์ ์ค๊ดํธ ์
- ex) method, for, if
LocalClass
๋static
๋ฉค๋ฒ๋ฅผ ์ ์ธํ ์ ์๋ค.final static
์ ๊ฐ๋ฅํ๋ค.
- ์์ ์ ๊ฐ์ธ๊ณ ์๋ block์ ๋ชจ๋ block์ ๋ฉค๋ฒ์ ์ ๊ทผ๊ฐ๋ฅํ๋ค.
- ์ฆ, method,
LocalClassExample
๋ฑ - ํ์ง๋ง non-static์ผ๋ก ์์ class๊ฐ ์ฌ์ฉ๋์์ ๊ฒฝ์ฐ๋ง ๊ฐ๋ฅํ๋ค.
- ์ฆ, method,
Anonymous Class```java
button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { โฆ } }
- ์ด๋ฆ์ด ์๋ ์ง์ญ ํด๋์ค์ ๊ฐ๋ค.
- Swift์ Closure์ ๋น์ทํ๊ฒ, ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง๋ค.
- ์์ ๊ฐ์ด GUI ์ ํ๋ฆฌ์ผ์ด์
์์ ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํ ๋ ์ฌ์ฉ๋๋ค.
-
## static nested class
```java
class OuterClass {
private final int age;
static class StaticNestedClass {
private final OuterClass outer;
int getAge() {
return this.age; // ๋ถ๊ฐ๋ฅ! - non-static ๊ฐ๋ฅ
return this.outer.age; // ๊ฐ๋ฅ!
}
}
}
OuterClass.InnerClass innerClass = new OuterClass.InnterClass();
static
๊ณผ ํจ๊ป ์ ์ธ๋๋ค.static
์ด๊ธฐ ๋๋ฌธ์ ํด๋์ค ๋ก๋ฉ ์์ ์ ํ๋ฒ๋ง ํธ์ถ๋๋ค.- ๋ค๋ง ์ฌ๊ธฐ์
static
์ ์๋ฏธ๋ ์ ์ ๋ฉค๋ฒ ํจ์, ๋ณ์์ ์๋ฏธ๊ฐ ์๋๋ค. - ํน์
static class
์ ์๋ฏธ๋ ์๋๋ค. - ํด๋น ํด๋์ค๋ ์๋์ ์ผ๋ก ์ ๊ฐ์ฒด์ reference๋ฅผ ๋ฐ์ง ์๊ฒ ๋ค์ ์๋ฏธ์ด๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฐธ์กฐ๋ก ์์ ๊ฐ์ฒด์
private
๋ณ์์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋, ์ง์ ์ ๊ทผ์ ์๋๋ค. - ๋จ
static
๋ณ์๋ ๊ฐ๋ฅํ๋ค. static
์ฌ์ฉ ์ํ์ ์์๋ ์ปดํ์ผ๋ฌ๊ฐ ์ด ์์ ์ ํด์คฌ๋ ๊ฒ์ด ์ ๋ถ๋ค.- non-nested์ ๋ค๋ฅด๊ฒ ์ธ์คํด์ค๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ ์ ์๋ค.
- ์์ฑ์ ๋ฌธ๋ฒ๋ ํจ์ฌ ๊น๋ํด ์ก๋ค.
- ์ด๋ฌํ ์ ์์ Swift์ ๋ค๋ฅธ ์ธ์ด๋ค์ ์ด ํ์ ๋ง์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
Nested Class์ ์ฉ๋
- ์๋ก ์ฐ๊ด๋ ํด๋์ค๋ค์ ๊ทธ๋ฃน ์ง์ ์ ์๋ค.
- ํจํค์ง๋ ๊ฐ๋ฅํ๊ธด ํ๋ค.
- ํ์ง๋ง ํด๋์ค ์์ ๋ฃ๋ ๊ฒ์ด ๋ ๊ธด๋ฐํจ์ ํํํ ์ ์๋ค.
- ๋ดํฌ ํด๋์ค๋ ๋ฐ๊นฅ ํด๋์ค์
private
๋ฉค๋ฒ์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.- ๋ฐ๋๋ ๊ฐ๋ฅ