코락 CoRock
코딩하는 락스타
코락 CoRock
  • 분류 전체보기 (394)
    • frameworks (19)
      • spring (19)
      • spring-boot (0)
      • testing (0)
    • languages (94)
      • java (39)
      • kotlin (0)
      • python (42)
      • r (13)
    • libraries (0)
    • programming (239)
      • android (13)
      • c (17)
      • cpp (22)
      • database (18)
      • design-pattern (4)
      • data-structures (11)
      • git (8)
      • hadoop (6)
      • html-css (7)
      • issue (4)
      • javascript (26)
      • jsp (34)
      • os (29)
      • php (6)
      • preferences (19)
      • etc (15)
    • discography (37)
      • k-pop (18)
      • pop (19)
    • blog (4)

블로그 메뉴

  • Programming
  • Java
  • JavaScript
  • Discography
  • K-Pop Songs
  • Pop Songs
  • Blog
  • Guestbook

공지사항

인기 글

태그

  • jsp
  • python
  • javascript
  • CentOS
  • Java
  • r
  • 파이썬
  • 자바스크립트
  • Spring
  • Android
  • oracle
  • linux

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
코락 CoRock

코딩하는 락스타

languages/java

[Java] 내부 클래스

2018. 9. 25. 10:27
반응형


12. 내부 클래스


가. 내부(중첩) 클래스(inner class, nested class)


'웹 개발자들은 내부 클래스를 쓸 일이 거의 없지만, 안드로이드 프로그래밍은 자주 사용하고, 윈도우즈 프로그래밍도 종종 사용합니다.

'''

자바는 decompile이 가능합니다.

compile: source → object code(기계어)

decompile: object code → source

(= disassemble)

ex. A.java → A.class (x)

A.class → A.java (o)

내부 클래스를 쓰면 좀 숨겨집니다.

'''


1) 내부 클래스의 정의

클래스 안에 선언된 클래스

특정 클래스 내에서만 주로 사용되는 클래스를 내부 클래스로 선언한다.

GUI 애플리케이션(AWT, Swing)의 이벤트 처리에 주로 사용됨

내부 클래스도 클래스이기 때문에 외부클래스$내부클래스.class로 컴파일됨


2) 장점

내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.

코드의 복잡성을 줄일 수 있다.


3) 단점

코드의 재사용이 어려움


내부(중첩) 클래스(inner class, nested class)

(image)


나. 무명 내부 클래스(anonymous inner class)


1) 이벤트 처리 등 1회성으로 사용하는 간단한 코드에 자주 사용

e.addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});


2) 클래스의 종류


가) 이름이 있는 클래스 - 재사용이 가능함

class 클래스이름 {


}


나) 이름이 없는 클래스 - 재사용을 할 수 없음

이름이 없는 일회용 클래스.

new 클래스이름() { }

new 인터페이스이름() { }


3) 무명 내부 클래스는 이름이 없기 때문에 외부클래스$번호.class로 컴파일됨


외부클래스.class

외부클래스$번호.class


interface Cookable {

public void cook();

}


class Food {

// Implementation of the Interface

Cookable p = new Cookable() {

public void cook() {

System.out.println("Cook implementer");

}

};

}


다. 실습문제


1) InnerClass.java    01;54;21

2) StaticInner.java    01;58;50

3) InnerFinal.java    02;02;19

4) Flyer.java    02;12;53

5) InnerUse.java


'이벤트 처리란 사용자의 요청(request)에 시스템이 응답(response)하는 것을 말합니다.

이벤트 처리를 하기 위해서는 3가지 요소가 필요한데,

이벤트소스: 이벤트의 대상(이벤트가 일어나는 장소라고 해야 할까요)

이벤트리스너: 이벤트 관찰자, 감시자

이벤트핸들러: 이벤트 처리기


이벤트소스.이벤트리스너(이벤트핸들러)

'''

반응형
저작자표시 비영리 변경금지
    'languages/java' 카테고리의 다른 글
    • [Java] 멀티 스레드 (Multil Thread)
    • [Java] 유용한 클래스들
    • [Java] class(추상화)
    • [Java] static, final, 다형성
    코락 CoRock
    코락 CoRock
    A COder dreaming of being a ROCKstar

    티스토리툴바