코딩항해기
[JAVA] 내부클래스, 익명클래스 본문
내부 클래스
두 클래스 간에 서로 쉽게 접근하여 사용할 수 있도록 만든 것이다.
중첩 클래스라고도 하며, 바깥쪽 클래스를 외부 클래스, 안쪽 클래스를 내부 클래스라고 한다.
내부 클래스의 종류
인스턴스 클래스 | 외부 클래스의 멤버 변수와 같은 위치에 선언한다 주로 외부 클래스의 멤버 변수와 관련된 작업에 사용될 목적으로 선언한다. |
외부클래스 멤버 변수위치 |
정적 클래스 | 외부 클래스의 클래스 변수와 같이 static 키워드가 부여된다. | 외부 클래스 클래스 변수 위치 |
지역 클래스 | 외부 클래스의 메서드 내부에서 선언하여 사용된다. 메서드 영역에서 선언되기 때문에 메서드 내부에서만 사용할 수 있다. |
외부 클래스 메서드 안 |
내부 클래스의 선언
public class 외부클래스 {
private String 외부클래스멤버;
public class 인스턴스클래스 {
//외부클래스 멤버 위치에서 선언된다.
//외부클래스$내부클래스.class
}
public static class 정적내부클래스 {
//외부클래스 멤버 위치에서 선언된다.
}
public void 외부클래스메서드(){
class 지역클래스 {
//외부클래스의 메서드 내부에서 선언된다.
}
}
}
내부 클래스의 객체화
//1. 인스턴스 클래스
외부클래스 outer = new 외부클래스();
외부클래스.내부클래스 in = outer.new 내부클래스();
//2. 정적 내부 클래스
외부클래스.내부클래스 in = new 외부클래스.내부클래스();
//외부 클래스 없이 바로 선언된다.
//3. 지역 클래스
지역클래스 local = new 지역클래스();
//단, 선언된 메소드 내에서만 가능하다.
익명 클래스
이름이 있는 내부 클래스과 달리 이름이 없는 클래스를 의미한다.
익명 클래스는 선언과 생성을 동시에 하며 일회성이다.
보통 인터페이스를 상속하지 않고 일회성으로 기능을 구현하여 사용할 때 주로 사용된다.
익명클래스 선언
Person p = new Person(){
@Override
void method(){
//재정의;
}
}; //익명클래스 영역 종료 중괄호에는 세미콜론이 붙는다.
'JAVA' 카테고리의 다른 글
[JAVA] 2차원 배열 (0) | 2024.07.25 |
---|---|
[JAVA] 예외처리 try-catch (+예외던지기 throw, throws) (0) | 2024.07.24 |
[JAVA] 상속 (+super, super()) (0) | 2024.07.21 |
[JAVA] 생성자 (+this, this()) (0) | 2024.07.20 |
[JAVA] 배열 (+index, Arrays) (1) | 2024.07.17 |