1. ๋ด๋ถ ํด๋์ค
์ ์ ๋ณ์์ ์ ์ ๋ฉ์๋๊ฐ ์๋ค๋ ์ฌ์ค์ ์ต๊ทผ์ ๋ฐฐ์ ์ต๋๋ค. ์ ์ ํด๋์ค๋ ์์์ด ๋ฐํ์ก์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ๋ฉ๋ฆฌ์ ์ด ์ฃผ์ ์ ์ ๊ทผํ ๊ฒ์ ๋๋ค.
Java์์๋ ํด๋์ค ๋ด์์ ํด๋์ค๋ฅผ ์ ์ธํ๋ ๊ฒ์ด ์ ์ ์ผ๋ก ํ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋์ค ๋ด์ ํด๋์ค ๋ด์ ์๋ ํด๋์ค ๋ด์ ํด๋์ค๋ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ๋งค์ฐ ๊ฐ๋จํด ๋ณด์ ๋๋ค.
class OuterClass
{
variables of the class
methods of the class
class NestedClass
{
variables of the class
methods of the class
}
}
์ฐ๋ฆฌ๋ ๋ค๋ฅธ ํด๋์ค ์์ ํ๋์ ํด๋์ค๋ฅผ ์ ์ธํ ๋ฟ์ ๋๋ค. ์ ๊ฒ๊ณผ ๊ฐ์ด ์ฌ์ด.
์:
public class Solution
{
static ArrayList<Point> points = new ArrayList<Point>();
public static void main(String[] args)
{
Point point = new Point();
point.x = 100;
point.y = 200;
points.add(point);
}
static class Point
{
int x;
int y;
}
}
์ค์ฒฉ ํด๋์ค๋ ์ ์ ์ด๊ฑฐ๋ ๋น์ ์ ์ผ ์ ์์ต๋๋ค. ์ ์ ์ค์ฒฉ ํด๋์ค๋ ๋จ์ํ ์ ์ ์ค์ฒฉ ํด๋์ค ๋ผ๊ณ ํฉ๋๋ค . ๋น์ ์ ์ค์ฒฉ ํด๋์ค๋ฅผ ๋ด๋ถ ํด๋์ค ( ๋ด๋ถ ํด๋์ค )๋ผ๊ณ ํฉ๋๋ค.
2. ์ ์ ํด๋์ค
์ ์ ์ค์ฒฉ ํด๋์ค๋ ์ธ๋ถ ํด๋์ค ์ธ๋ถ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํด๋์ค์ ๊ณต์ฉ ์ก์ธ์ค ํ์ ์๊ฐ ์๋ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ ์ด๋์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํด๋์ค๋ ์ผ๋ฐ ํด๋์ค์ ๊ฑฐ์ ๊ตฌ๋ณํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ช ๊ฐ์ง ์ฐจ์ด์ ์ด ์์ต๋๋ค.
ํด๋์ค ์ด๋ฆ
์ธ๋ถ ํด๋์ค๊ฐ ์๋ ๋ค๋ฅธ ๊ณณ์์ ์ ์ ์ค์ฒฉ ํด๋์ค๋ฅผ ์ฐธ์กฐํ๋ ค๋ฉด ์ธ๋ถ ํด๋์ค ์ด๋ฆ๊ณผ ์ค์ฒฉ ํด๋์ค ์ด๋ฆ์ผ๋ก ๊ตฌ์ฑ๋ ํด๋์ค ์ด๋ฆ์ ์ง์ ํด์ผ ํฉ๋๋ค. ์ด ์ด๋ฆ์ ์ผ๋ฐ์ ์ธ ๋ชจ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
OuterClass.InnerClass
์:
์์ฐํฐ ํด๋์ค | ์ค์ฒฉ ํด๋์ค | ์ค์ฒฉ ํด๋์ค์ ์ ์ฒด ์ด๋ฆ |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
์ค์ฒฉ ํด๋์ค์ ์์ฒด ์ค์ฒฉ ํด๋์ค๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋น ์ด๋ฆ์ ๋จ์ํ ์ ์ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ๋ฉ๋๋ค.
JDK์์ ์ค์ฒฉ๋ ํด๋์ค์ ์ ํ์ ์ธ ์๋ ํด๋์ค Entry
๋ด๋ถ์ ํด๋์ค ์
๋๋ค Map
. HashMap
๊ฐ์ฒด ์ entrySet()
์ ์ฅ๋ ํค-๊ฐ ์ ์ธํธ๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด .Set<Map.Entry>
์ด๊ฒ์ ์ธ๋ถ ํด๋์ค์ ์ค์ฒฉ ํด๋์ค์ ์์
๋๋ค.Map.Entry
๊ฐ์ฒด ๋ง๋ค๊ธฐ
์ ์ ์ค์ฒฉ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฒ์ ๋งค์ฐ ์ฝ์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
OuterClass.NestedClass name = new OuterClass.NestedClass();
์ผ๋ฐ ํด๋์ค์ ๋์ผํ์ง๋ง ์ด๋ฆ์ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
์ ์ ๋ฉ์๋ ํธ์ถ
์ ์ ํด๋์ค์ ์ ์ ๋ฉ์๋๊ฐ ์๋ ๊ฒฝ์ฐ ์ผ๋ฐ ํด๋์ค์ ์ ์ ๋ฉ์๋์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ก์ธ์คํ ์ ์์ต๋๋ค(๋จ, ํด๋์ค ์ด๋ฆ์ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋จ).
OuterClass.NestedClass.staticMethod();
์ ์ ๋ณ์์ ์ก์ธ์ค
์ค์ฒฉ ํด๋์ค์ ๊ณต๊ฐ ์ ์ ๋ณ์์ ์ก์ธ์คํ๋ ๊ฒ๋ ์ฝ์ต๋๋ค.
OuterParent.NestedClass.nameOfStaticVariable
3. ์ ์ ํด๋์ค์ ํน์ง
์ ์ ์ค์ฒฉ ํด๋์ค๋ ์ ์ ์ด๋ผ๊ณ ํ ์ด์ ๊ฐ ๊ฐ์ฅ ์ ์ต๋๋ค . ๊ทธ๊ฒ๋ค์ ์ผ๋ฐ ํด๋์ค์ฒ๋ผ ๋์ํฉ๋๋ค . ๋น์ ์ ๋ฉ์๋์์ ์ก์ธ์คํ๋ ๋ฐ ์ ํ์ด ์์ต๋๋ค.
์ธ๋ถ ํด๋์ค ๋ด์์ ์ ์ ์ค์ฒฉ ํด๋์ค๋ก ์์ ํ๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ(์ค์ฒฉ ๋ฐ ์ ์ ์ด ์๋) ํด๋์ค์ ์ด๋ค ์ฐจ์ด๋ ๋๋ผ์ง ๋ชปํ ๊ฒ์ ๋๋ค.
์:
์ ์ ์ค์ฒฉ ํฌ์ธํธ ํด๋์ค | ์ผ๋ฐ ํฌ์ธํธ ํด๋์ค. |
---|---|
|
|
์ผ๋ถ ์ ์ ์ค์ฒฉ ํด๋์ค๋ฅผ ์ธ๋ถ ํด๋์ค ๋ฐ์ผ๋ก ์ด๋ํ๋ฉด ๋ณ๊ฒฝ๋๋ ์ ์ผํ ์ฌํญ์ ์ ํด๋์ค๊ฐ ๋ ์ด์ private static
์ด์ ์ธ๋ถ ํด๋์ค์ ๋ณ์ ๋ฐ ๋ฉ์๋์ ์ก์ธ์คํ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
์:
์ ์ ์ค์ฒฉ ํฌ์ธํธ ํด๋์ค | ์ผ๋ฐ ํฌ์ธํธ ํด๋์ค. |
---|---|
|
|
main
์ผ๋ฐ Point
ํด๋์ค ์ ๋ฉ์๋ ๋ ํด๋์ค ์ ๋ณ์ ์ ์ก์ธ์ค ํ ์ ์์ต๋๋ค !private static
points
Solution
์ด๊ฒ์ด ์ ์ ์ค์ฒฉ ํด๋์ค์ ์ผ๋ฐ ํด๋์ค์ ์ฃผ์ ์ฐจ์ด์ ์
๋๋ค. ์ ์ ์ค์ฒฉ ํด๋์ค์ ๋ฉ์๋๋ ์ ์ธ๋ ๊ฒฝ์ฐ์๋ ์ธ๋ถ ํด๋์ค์ ๋ชจ๋ ์ ์ ๋ณ์ ๋ฐ ๋ฉ์๋์ ์ก์ธ์คํ ์ ์์ต๋๋ค private
.
์๊ฐํด ๋ณด๋ฉด ์ ๋๋ผ์ด ์ผ์
๋๊น? ์์ ์๋ private
์ด ์์ ์๊ฐ ํ์ํ ๋ณ์์ ๋ฉ์๋๋ ํด๋น ํด๋์ค ๋ด์์๋ง ์ก์ธ์คํ ์ ์๋ค๊ณ ๋ช
์์ ์ผ๋ก ๋งํฉ๋๋ค. ์ธ๋ถ ํด๋์ค ์์ ์ ์ ์ค์ฒฉ ํด๋์ค๊ฐ ์์ต๋๊น? ์, ๋ฌธ์ ์์ต๋๋ค! ์ํ๋ ๋งํผ ์ก์ธ์คํ์ธ์.
GO TO FULL VERSION