728x90
728x90
내부 클래스 (Inner class, 중첩 클래스)
- 클래스 내부에서 선언한 다른 클래스
→ 해당 클래스를 감싸고 있는 '외부 클래스'와 밀접한 연관이 있는 경우가 많음
- 다른 외부 클래스에서 사용할 일이 없는 경우에는 내부 클래스로 선언하는 것을 고려할 수 있음
→ 장점 : 내부 클래스에서 외부 클래스의 멤버 변수에 접근하기 쉬움
(코드의 복잡성을 줄임)
// 외부 클래스의 인스턴스화
외부클래스 참조변수 = new 외부클래스();
// 내부 클래스의 인스턴스화 (내부 클래스에 private 선언 시 사용 불가)
외부클래스.내부클래스 참조변수 = 외부클래스.new 내부클래스();
# 인스턴스 내부 클래스
- 내부적으로 사용한 클래스 (private 권장)
- 정적 내부 클래스와의 차이점
: 외부 클래스가 생성된 후 내부 클래스가 생성됨
→ 외부 클래스와 내부 클래스가 모두 인스턴스화되어야 사용 가능함
# 정적 내부 클래스 (Static)
- static 키워드가 붙는 내부 클래스
# 지역 내부 클래스 (local)
- 지역변수처럼, 메서드 내부에서 정의해서 사용하는 클래스
익명 클래스
- 이름(참조변수)이 없는 클래스 → 일회용으로 사용됨
// 익명 클래스
new 클래스명();
익명 구현 클래스
- 원래의 추상 클래스 or 인터페이스는 new 키워드를 통해 인스턴스화할 수 없음
→ 익명 구현 클래스를 이용하여 new 키워드를 사용할 수 있음
- 익명 구현 클래스를 사용하면 implements 키워드를 사용하지 않아도 됨
// 예시 //
area.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
});
320x100
반응형
'Java > Base' 카테고리의 다른 글
[Java] 쓰레드 (Thread) (0) | 2023.02.19 |
---|---|
[Java] 제네릭 (Generic) (0) | 2023.02.17 |
[Java] 오류와 예외 처리 (0) | 2023.02.15 |
[Java] Object 클래스 (0) | 2023.02.14 |
[Java] 인터페이스 - DAO 구현 (0) | 2023.02.13 |