Programming/Java
[기초] 내부 클래스, 익명 클래스
devpine
2019. 12. 19. 21:02
반응형
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
자바 입문 | 프로그래머스
평가 4.9 33개의 평가 ★★★★★31 ★★★★1 ★★★1 ★★0 ★0 김세윤 2019.12.03 18:36 박성근 2019.11.28 02:41 정일영 2019.11.14 00:02 APEACH 2019.10.28 12:16 최재욱 2019.10.12 20:16 리뷰 더보기
programmers.co.kr
반응형