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 이름만으로 객체 생성 가능