JAVA

Nested Class

CodePoetry 2014. 10. 14. 10:06
  • 논리적으로 한 곳에서만 사용되는 클래스들을 grouping
  • 코드 가독성 및 유지보수성 증가
  • Static Nested (4 종류 중 이것만static)
    - outer 클래스의 맴버변수 선언위치에 선언
    - static member변수나 static method처럼 . 찍고 사용
    - 메모리 구조 : outer 클래스와 독립적으로 존재 (코드 상으로는 outer 내부에 작성)
    - Outer(Line), Nested(static Point) 일 때
        Line.Point point = new Line.Point(10, 20); // Outer class의 객체만 생성하면 Nested 객체는 생성 없이 바로 사용 가능
  • Instance Inner
    - outer 클래스의 필드, 메소드와 같은 수준
    - 메모리 구조 : outer 클래스 객체 내에 존재
    - Outer(Bank), Inner(Account)일 때
        Bank bank = new Bank();
        Bank.Account acc = bank.new Account("James"); // Outer와 Nested 객체 모두 생성 후 사용 가능
  • Local Inner
    - Method 안에 선언된 Nested 클래스
    - Local inner class를 사용하는 문장들보다 앞에 와야 한다.
  • Anonymous Inner
    - 클래스의 선언과 객체 생성을 동시에 한다.
    - 오직 하나의 객체만 생성할 수 있는 일회용 클래스
    - Interface와 Abstract class 이름만으로 객체 생성 가능