코락 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

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

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

코딩하는 락스타

[Java] 내부 클래스
languages/java

[Java] 내부 클래스

2018. 1. 22. 21:13
반응형

12. 내부 클래스

 

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

12.1.1 내부 클래스의 정의

클래스 안에 선언된 클래스
특정 클래스 내에서만 주로 사용되는 클래스를 내부 클래스로 선언한다.
GUI 애플리케이션(AWT, Swing)의 이벤트 처리에 주로 사용됨
내부 클래스도 클래스이기 때문에 외부클래스$내부클래스.class로 컴파일됨

 

12.1.2 장점

내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
코드의 복잡성을 줄일 수 있다.

 

12.1.3 단점

코드의 재사용이 어려움

 

Inner and Nested Classes . (2013). Retrieved from https://stackoverflow.com/questions/20298705/inner-and-nested-classes.

 

class AA {
	static class BB {
    	static int bb = 20;
        static class CC {
        	int cc = bb + 10;
        }
    }
}

public class ClassTop {
	public static void main(String[] args) {
    	AA.BB.CC = new AA.BB.CC();
        
        System.out.println("CC클래스 내부 변수 CC = " + c.cc);
    }
}

 

 

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

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

e.addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosing(WindowEvent e) {
    	System.exit(0);
    }
});

 

12.2.2 클래스의 종류

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

class 클래스이름 {
	// (...)
}

 

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

/**
 * 이름이 없는 일회용 클래스
 */
new 클래스이름() {
	// (...)
}

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

 

12.2.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");
        }
    };
}

 

 

12.3 실습문제

반응형
저작자표시 비영리 변경금지
    'languages/java' 카테고리의 다른 글
    • [Java] 제네릭과 컬렉션
    • [DAY 04] 계산기 프로그램 구현
    • [Java] class(추상화)
    • [Java] static, final, 다형성
    코락 CoRock
    코락 CoRock
    A COder dreaming of being a ROCKstar

    티스토리툴바