์ค์ฒฉ ํด๋์ค๋?
- ํ๋์ ํด๋์ค ๋ด๋ถ์ ์ ์ธ๋ ๋ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์๋ฏธํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก๋ ์ฌ๋ฌ ํด๋์ค์ ๊ด๊ณ๋ฅผ ๋งบ๋ ๊ฒฝ์ฐ ๋ ๋ฆฝ์ ์ผ๋ก ํด๋์ค๋ฅผ ์ ์ธํจ.
- ํน๋ณํ ๊ฒฝ์ฐ, ํน์ ํด๋์ค์ ๊ด๊ณ๋ฅผ ๋งบ๋ ํด๋์ค๋ฅผ ๋ด๋ถ์ ์ ์ธํ๊ธฐ๋ ํจ.
์ฅ์
- ํด๋์ค๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ฌถ์ด์ ํํํจ์ผ๋ก์จ ์ฝ๋์ ์บก์ํ ์ฆ๊ฐ
- ์ธ๋ถ์์๋ ๋ด๋ถ ํด๋์ค์ ์ ๊ทผํ ์ ์์ผ๋ฏ๋ก ์ฝ๋์ ๋ณต์ก์ฑ์ ์ค์ผ ์ ์์
- ๋ด๋ถ ํด๋์ค์์ ์ธ๋ถ ํด๋์ค์ ๋ฉค๋ฒ๋ฅผ ์์ฝ๊ฒ ์ ๊ทผํ ์ ์์.
์ธ๋ถ ํด๋์ค
public class OutClass {
private int num = 10; // ์ธ์คํด์ค ๋ณ์
private static int sNum = 20; // ์ ์ ๋ณ์ (ํด๋์ค ์์์ ๋ณ์)
InClass inClass;
// ์ธ๋ถ ํด๋์ค์ ๋ํ ์์ฑ์ ํธ์ถ
public OutClass() {
inClass = new InClass();
}
class InClass {
int inNum = 100;
// static int sInNum = 200; <- JDK 11๋ฒ์ ๊ธฐ์ค์ผ๋ก๋ ๋ด๋ถ ํด๋์ค์ ์ ์ ๋ณ์ ์ ์ธ ๋ถ๊ฐ
void inTest() {
System.out.println("์ธ๋ถ ํด๋์ค์ ์ธ์คํด์ค ๋ณ์ : " + num);
System.out.println("์ธ๋ถ ํด๋์ค์ ์ ์ ๋ณ์ : " + sNum);
}
// static void sTest() {} <- JDK 11๋ฒ์ ๊ธฐ์ค์ผ๋ก๋ ๋ด๋ถ ํด๋์ค์ ์ ์ ๋ฉ์๋ ์ฌ์ฉ ๋ถ๊ฐ
}
public void usingClass() {
inClass.inTest();
}
}
์ธ์คํด์ค ๋ด๋ถ ํด๋์ค๋ ์ธ์คํด์ค ๋ณ์๋ฅผ ์ ์ธํ ๋์ ๊ฐ์ ์์น์ ์ ์ธํ๋ฉฐ,
์ธ๋ถ ํด๋์ค ๋ด๋ถ์์๋ง ์์ฑํ์ฌ ์ฌ์ฉํ๋ ๊ฐ์ฒด๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉ
- ํด๋์ค ๋ด์ ์ฌ๋ฌ ๋ณ์๊ฐ ์๊ณ ์ด๋ค ์ค ์ผ๋ถ๋ฅผ ๋ชจ์ ํด๋์ค๋ก ํํ ํ ์ ์๋ค.
- ํด๋์ค๋ฅผ ๋ค๋ฅธ ์ธ๋ถ ํด๋์ค์์ ์ฌ์ฉํ ์ผ์ด ์๋ ๊ฒฝ์ฐ, ๋ด๋ถ ์ธ์คํด์ค ํด๋์ค๋ก ์ ์
- ์ธ๋ถ ํด๋์ค๋ฅผ ์์ฑํ์ง ์๊ณ ์ธ์คํด์ค ๋ด๋ถ ํด๋์ค๋ฅผ ์ฌ์ฉํ ์ ์์
- ์ธ์คํด์ค ๋ด๋ถ ํด๋์ค์์ ์ ์ ๋ณ์ ๋ฐ ์ ์ ๋ฉ์๋๋ฅผ ์์ฑํ ์ ์์
(JDK 16๋ถํฐ๋ ๊ฐ๋ฅ)
Main
public class Main {
public static void main(String[] args) {
OutClass outClass = new OutClass();
outClass.usingClass(); // ์ ์์ ์ผ๋ก ๋ด๋ถ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
outClass.inClass.inTest(); // ์ ๊ทผ์ ํ์๋ฅผ private์์ default๋ก ๋ฐ๊ฟ์ ์ ๊ทผ ๊ฐ๋ฅํด์ง.
}
}