[Java] 내부 클래스(nested Class)와 익명 클래스(Anonymous Class)
by 우와한개발자
1. 멤버 내부 클래스 Member Inner Class
- 클래스 안에 멤버로 존재하는 내부 클래스
- 외부 클래스의 인스턴스가 있어야 생성 가능
- 외부 클래스의 private 멤버 접근 가능
class Outer {
private String name = "Outer";
class Inner {
void print() {
System.out.println(name); // 외부 클래스 접근 가능
}
}
}
public class Test {
public static void main(String[] args) {
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.print();
}
}
2. 지역 내부 클래스 Local Inner Class
- 메서드 또는 블록 안에 존재하며 이름이 있는 지역 내부 클래스
- 모바일에서 이벤트 핸들러(EventHandler)에서 많이 사용.
- 외부 클래스의 인스틴스만 해서 접근하도록 제한할 때 주로 사용 .
- 내부 클래스가 static 인경우에는 외부 클래스의 멤버 참조 불가
- 자바 17버전부터 내부 클래스의 멤버가 static 인 경우 자동으로 내부 클래스도 정적 내부 클래스가 됨.
import javax.swing.*;
import java.awt.event.*;
public class LocalInnerExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Local Inner");
JButton button = new JButton("클릭");
// 지역 내부 클래스 Local Inner Class
class MyHandler implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("지역 내부 클래스 실행");
}
}
button.addActionListener(new MyHandler());
frame.add(button);
frame.setSize(300,200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
3. 익명클래스 Anonymous Class
- 이름이 없는 클래스
- 선언과 동시에 객체 생성
- new 키워드로 객체 생성하는 부분에서 메서드 구현
- 컴파일하면 주 클래스 이름에 지역클래스번호를 ‘$’문자로 연결한 파일 생성.
import java.util.*;
public class Test {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "kiwi");
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
});
System.out.println(list);
}
}
'언어 > Java' 카테고리의 다른 글
| [Java] 라이브러리(Library) & 모듈(module) & 리플렉션(reflection) (0) | 2026.03.04 |
|---|---|
| [Java] 주석(/, /*, /**)과 공백, 식별자와 예약어 (0) | 2026.03.03 |
| [Java] 주요 어노테이션 정리 - Java, Lombok, Spring, JPA (0) | 2026.03.03 |
| [Java] 어노테이션(Annotation)이란? 개념과 특징, 주요 어노테이션 정리 (0) | 2026.03.03 |
| [Java] 스트림(Stream)이란? 개념과 주요 메서드, 직렬/병렬 스트림 (0) | 2026.03.03 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자