<내부클래스(Inner Class)>
class 클래스명{
변수
생성자
메서드
class 클래스명2{} //클래스 안에 선언되는 내부클래스
} //외부클래스
내부클래스는 보통 현재 클래스 안에서만 사용할 목적으로 만드는 클래스이며
일종의 은닉화라고 볼 수 있다.
종류
(객체 생성 시점), 객체 생성 방법
인스턴스 내부클래스
(외부클래스 생성 후 생성)
static변수, static메서드 선언 불가
외부클래스 변수 사용 가능
MemberInner outer = new MemberInner();
MemberInner.Inner inner = outer.new Inner();
- 한 줄로 합치면
MemberInner.Inner inner = new MemberInner().new Inner();
정적(static) 내부 클래스
(외부클래스 상관 없이 내부클래스 생성)
static변수, static메서드 사용
instance멤버 사용 불가
StaticInner.Inner inner = new StaticInner.Inner();
지역 내부클래스
(내부클래스가 포함된 메서드에서 내부클래스 생성)
외부클래스 변수 사용 가능
메서드 안에있는 지역 변수 사용 불가 (사용시 상수(final)가 됨)
Inner i = new Inner();
i.printData();
//메서드 안에서 객체 생성 후 메서드 호출
Anonymous Inner class : 이름 없는 내부 클래스
(선언 시 객체 생성)
new super(){
멤버;
}
new super_interface(){
//interface로부터 물려받은 추상 메서드 오버라이딩
}
이름이 없기 때문에 일회성으로 하나의 멤버만 선언할 수 있다. 생성자는 불가.
'JAVA' 카테고리의 다른 글
Java Stream (0) | 2022.01.13 |
---|---|
Java 람다식, 람다함수 (0) | 2022.01.06 |
Java 날짜와 시간 표현 (0) | 2021.12.27 |
Java java.util / Collection,List ,Set,Map인터페이스 / 주요 메서드 정리 (0) | 2021.12.22 |
Java Class 클래스, java.util 패키지, 제네릭<> (0) | 2021.12.22 |