내부클래스란?
클래스 안에 선언된 클래스
외부에 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일수 있다
내부 클래스의 종류
내부 클래스 | 특징 |
인스턴스 클래스 | 외부 클래스의 멤버변수 선언위치에 선언하며, 외부 클래스의 인스턴트 멤버처럼 다루어짐 |
스태틱 클래스 | 외부 클래스의 멤ㅈ버변수 선언위치에 선언하며, 외부 클래스의 static 멤버처럼 다루어짐 |
지역 클래스 | 외부 클래스의 메서드나 초기화블럭 안에 선언하며, 선언된 영역 내부에서만 사용될 수 있다 |
익명 클래스 | 클래스의 선언과 객체의 생성을 동시에 하는 이름없는 일회용 클래스 |
익명클래스 예제
interface RemoteControl{
void turnOn();
void turnOff();
}
public class Ex07_익명클래스 {
public static void main(String[] args) {
RemoteControl rc = new RemoteControl() {
public void turnOn() {
System.out.println("TV를 켠다");
}
public void turnOff() {
System.out.println("TV를 끈다");
}
};
rc.turnOn();
rc.turnOff();
}
}
다른 내부클래스같은 경우에는 객체를 생성할때 RemoteControl rc = new RemoteControl() {}이렇게 하지만 익명 클래스의 경우에는 클래스 선언과 객체를 동시에 하기때문에 오로지 단 하나의 인터페이스를 상속받거나 구현할 수 있다
내부클래스를 쓰는이유
내부클래스를 사용하면 비슷한 클래스들끼리 묶을수 있어서 코드의 캡슐화를 증가시킬수 있으며 내부 클래스에서 외부 클래스로 손쉽게 접근할 수 있게된다