JAVA
지역 내부 클래스와 익명 내부 클래스
jiyoon12
2025. 4. 27. 22:12
- 지역 내부 클래스(Local Inner Class): 메서드 내부에 선언되며, 선언된 메서드 내에서만 사용된다.
- 지역 내부 클래스는 해당 메서드의 지역 변수와 마찬가지로 스코프가 제한된다.
package inner;
/**
* 지역 내부 클래스(Local Inner Class)
* 메서드 안에 클래스가 있는 형태
*/
public class OuterClass2 {
public void display() {
// 지역 내부 클래스
class LocalInnerClass {
void printMessage() {
System.out.println("안녕 나는 지역 내부 클래스 메서드야~");
}
}
// LocalInnerClass 생성
LocalInnerClass inner = new LocalInnerClass();
inner.printMessage();
} // end og method - display()
public static void main(String[] args) {
OuterClass2 outerClass2 = new OuterClass2();
outerClass2.display();
}
}
- 익명 내부 클래스(Anonymous Inner Class): 이름이 없는 내부 클래스로, 주로 인터페이스나 추상 클래스를 간편하게 구현할 때 사용된다.
- 익명 내부 클래스는 오직 하나의 인스턴스만 생성할 수 있으며, 주로 이벤트 처리나 콜백 구현에 사용된다.
package inner;
/**
* 익명 내부 클래스란?
* 익명(익명 이란? 이름이 없다)
*/
public class OuterClass3 {
// Runnable runnable; // 인터페이스
// 인터페이스는 기본적으로 인스턴스화 할 수 없다.
// 하지만 익명 내부 클래스로 구현 할 수 있다.
public OuterClass3() {
// 1. 구현부를 만들어 준다.
// 2. 추상 메서드를 구현 메서드로 변경해 준다.
new Runnable() {
@Override
public void run() {
}
};
}
public static void main(String[] args) {
// 익명 클래스란 이름이 없는 클래스이다.
new OuterClass3(); // 익명 클래스
}
}