728x90
반응형
내부클래스(inner class)
[1] 내부클래스란?
클래스 내에 선언된 클래스이다.
내부 클래스의 장점
- 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
- 코드의 복잡성을 줄일 수 있다.(캡슐화)
[2] 내부 클래스의 종류와 특징
변수 선언 위치에 따라 구분되어 진다.
내부클래스 | 특징 |
인스턴스 클래스 (instance class) |
외부 클래스의 멤버변수 선언위치에 선언, 외부 클래스의 인스턴스 멤버처럼 다루어짐 주로 외부 클래스의 인스턴스멤버들과 관련된 작업에 사용 목적 |
스태틱 클래스 (static class) |
외부 클래스의 멤버변수 선언위치에 선언, 부 클래스의 static멤버처럼 다루어짐 주로 외부 클래스의 static멤버, static메서드에 사용될 목적으로 선언 |
지역 클래스 (local class) |
외부 클래스의 메서드나 초기화블럭 안에 선언, 선언된 내부 영역에서만 사용가능 |
익명 클래스 (anonymous class) |
클래스의 선언과 객체의 생성을 동시에 하는 이름없는 클래스(일회용) |
[3] 내부 클래스의 제어자와 접근성
내부 클래스도 클래스이기 때문에 abstract나 final과 같은 제어자를 사용할 수 있을 뿐만 아니라, 멤버변수들처럼 private, protected과 접근제어자도 사용이 가능하다.
[4] 익명 클래스(anonymous class)
익명 클래스는 특이하게도 다른 내부 클래스들과 달리 이름이 없다. 클래스의 선언과 객체의 생성을 동시에 하기 때문에 단 한번만 사용될 수 있고 오직 하나의 객체만을 생성할 수 있는 일회용 클래스이다.
new 조상클래스이름() {
멤버 선언;
}
또는
new 구현인터페이스이름() {
멤버 선언;
}
이름이 없기 때문에 생성자도 가질 수 없으며, 조상클래스의 이름이나 구현하고자 하는 인터페이스의 이름을 사용해서 정의하기 때문에 하나의 클래스로 상속받는 동시에 인터페이스를 구현하거나 둘 이상의 인터페이스를 구현할 수 없다.
오로지 단 하나의 인터페이스만을 구현할 수 있다.
익명클래스는 이름이 없기 때문에 '외부클래스명$숫자.class' 형식으로 클래스 파일명이 결정된다.
728x90
반응형
'JAVA > 자바의정석' 카테고리의 다른 글
자바(JAVA) - 예외 처리(exception handling) (0) | 2022.01.15 |
---|---|
자바(JAVA) - 지네릭스(Generics) (0) | 2022.01.15 |
객체지향 프로그래밍 II (5) - 인터페이스 (0) | 2022.01.11 |
객체지향 프로그래밍 II (4) - 다형성 (0) | 2022.01.11 |
자바(JAVA) : 객체지향 프로그래밍 II (3) - 패키지, 제어자 (0) | 2022.01.10 |