본문 바로가기
Java

[Java] 내부 클래스와 익명 클래스

by 스응 2023. 2. 16.
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
반응형

댓글