java/코드 리뷰
10. oop10 - (1) Outer Demo (내부 클래스)
Astaroth아스
2020. 4. 3. 08:46
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
33
34
35
|
package oop10;
// 인스턴스 내부클래스
public class Outer1 {
int x;
static int y;
void m1() {
Inner1 i = new Inner1(); // 외부 클래스의 멤버 메서드에서 내부 클래스 사용 가능
}
static void m2() {
// Inner1 i = new Inner1(;) // 외부 클래스의 클래스 메서드에서 내부 클래스 사용 불가
}
// 인스턴스 내부 클래스
class Inner1 {
int a;
// static int b; // 클래스 변수 선언 불가
void m3() {}
// static void m4() {} // 클래스 메서드 선언 불가
void m5() {
System.out.println(x); // 외부 클래스의 멤버변수
System.out.println(y); // 외부 클래스의 클래스 변수
m1(); // 외부 클래스의 멤버 메서드
Outer1.m2(); // 외부 클래스의 클래스 메서드
System.out.println(a); // 자신의 멤버변수
m3(); // 자신의 멤버 메서드
}
}
}
|
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
33
|
package oop10;
// 스태틱 내부클래스
public class Outer2 {
int x;
static int y;
void m1() {
Inner2 i = new Inner2(); // 외부 클래스의 멤버 메서드에서 내부 클래스 사용 가능
}
static void m2() {
Inner2 i = new Inner2(); // 외부 클래스의 멤버 메서드에서 내부 클래스 사용 가능
}
static class Inner2 {
int a;
static int b; // 클래스 변수 선언 가능
void m3() {}
static void m4() {} // 클래스 메서드 선언 가능
void m5() {
// System.out.println(x); // 멤버 변수 사용 불가
System.out.println(Outer2.y);
// m1(); // 멤버 메서드 사용 불가
Outer2.m2();
}
}
}
|
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
33
34
35
36
37
38
39
40
41
|
package oop10;
// 로컬 내부클래스
public class Outer3 {
int x;
static int y;
void m1() {}
static void m2() {}
void m3() {
int a = 10;
int b = 10;
final int c = 10;
b = 20;
class Inner3 {
int 가; // 값이 한번도 바뀌지 않았음
// static int 나; // 클래스 변수 정의 불가
void m4() {} // 원래 값을못 구 함
// static void m5() {} // 클래스 메서드 정의 불가
void m6() {
System.out.println(x); // 외부 클래스의 멤버 변수
System.out.println(y); // 외부 클래스의 클래스 변수
m1(); // 외부 클래스의 멤버 메서드
Outer3.m2(); // 외부 클래스의 클래스 메서드
System.out.println(a); // 내부 클래스가 정의된 메서드의 변수
// System.out.println(b); // 내부 클래스가 정의된 메서드의 변수, 값 변하면 오류
System.out.println(c); // 내부 클래스가 정의된 메서드의 상수
}
Inner3 i = new Inner3();
//i.m6();
}
}
}
|