반응형
1) 중첩 클래스 / 인스턴스 클래스 (필드 선언 위치에 선언됨)
- 밖에 Main 객체를 만든다 -> Main.Cal cal = m.new Cal(); 생성 후 사용
public class Main {
class Cal{
int val = 0;
public void plus(){
val++;
}
}
public static void main(String[] args) {
Main m = new Main();
Main.Cal cal = m.new Cal();
cal.plus();
System.out.println(cal.val);
}
}
2) 정적 중첩 클래스 / static 클래스 (내부 클래스가 static으로 정의됨)
- Main 객체 생성할 필요 없이 Main.Cal cal = m.new Cal(); 생성 후 사용
public class innerExam2 {
static class Cal{
int val = 0;
public void plus(){
val++;
}
}
public static void main(String[] args) {
innerExam2.Cal cal = new innerExam2.Cal();
cal.plus();
System.out.println(cal.val);
}
}
3) 지역 중첩 클래스 / 지역 클래스 (메소드 안에 클래스 선언함)
- 메소드 안에서 해당 클래스 이용 가능
public class innerExam3 {
public void exec(){
class Cal{
int val = 0;
public void plus(){
val++;
}
}
Cal cal = new Cal();
cal.plus();
System.out.println(cal.val);
}
public static void main(String[] args) {
innerExam3 t = new innerExam3();
t.exec();
}
}
4) 익명 클래스 / 익명 중첩 클래스
- Action을 상속받는 클래스를 만들 필요가 없을 경우 사용(예: 일회성)
public abstract class Action {
public abstract void exec();
}
public class Main {
public static void main(String[] args) {
// Action action = new MyAction();
// action.exec();
Action action = new Action() {
@Override
public void exec() {
System.out.println("exec");
}
};
action.exec();
}
}
이 글은 아래 강의를 수강하고 개인적으로 정리한 글입니다.
https://programmers.co.kr/learn/courses/5
반응형
'Programming > Java' 카테고리의 다른 글
[중급] Object 클래스 (0) | 2019.12.19 |
---|---|
[기초] 예외 처리 (0) | 2019.12.19 |
[기초] String 클래스 (0) | 2019.12.19 |
Java 개발 환경 Intellij 설치 (0) | 2019.12.19 |
[Spring] DAO, DTO, Service란 (0) | 2019.04.17 |
댓글