[Java] Inner Class, Inner Static Class
Inner Instance Class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| // 외부 클래스가 먼저 생성된 이후에, 인스턴스 내부 클래스를 사용할 수 있다.
public class OutClass { // 외부 클래스
private int num = 10; // 외부 클래스 private 변수
private static int sNum = 10; // 외부 클래스 정적 변수
private InClass inClass;
public OutClass(){ // OutClass 생성자
inClass = new InClass();
}
class InClass{ // 인스턴스 내부 클래스
int inNum = 100; // 내부 클래스의 인스턴스 변수
// 내부 클래스는 외부 클래스를 생성한 이후에 사용해야 하기 때문에
// static이 허용되지 않는다.
// static int sInNum = 10;
// static void staticInTest(){
// // static is not allowed;
// }
void inTest(){
System.out.println(num); // 외부 클래스의 변수 사용 가능
System.out.println(sNum); // 외부 클래스의 static 변수 사용 가능
}
public void usingClass(){
inClass.inTest();
}
}
}
|
Inner Static Class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| // 외부 클래스를 생성하지 않고 inner static class 생성 가능
public class OutClass { // 외부 클래스
private int num = 10; // 외부 클래스 private 변수
private static int sNum = 10; // 외부 클래스 정적 변수
static class InStaticClass { // 인스턴스 내부 클래스
int inNum = 100; // 내부 클래스의 인스턴스 변수
// static이 허용된다.
static int sInNum = 10;
static void staticInTest() {
// System.out.println(num); // 외부클래스의 인스턴스 변수 불가능
System.out.println(sNum);
// System.out.println(inNum); // 내부클래스의 인스턴스 변수 불가능
System.out.println(sInNum);
}
void inTest() {
//(외부 클래스 객체가 생성되지 않았을 수 있음) -> num에 접근 불가능
// inTest()는 OutClass.InStaticClass의 instance가 생성된 이후 사용 가능
// System.out.println(num); // 외부클래스의 인스턴스 변수 불가능
System.out.println(sNum);
System.out.println(inNum);
System.out.println(sInNum);
}
public void usingClass() {
// 외부 클래스를 생성하지 않고 inner static class 생성 가능
OutClass.InStaticClass sInClass = new OutClass.InStaticClass();
}
}
}
|
Leave a comment