반응형
내부 클래스(inner class)
- 클래스 안의 클래스
class A {
class B {
}
}
장점
- 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
- 코드의 복잡성을 줄일 수 있다.(캡슐화)
A 클래스에서만 쓰는 클래스를 굳이 밖에 둘 필요가 없다.
B클래스에서는 객체 생성 없이 A 클래스의 멤버변수에 접근할 수 있다.
종류와 특징
- 내부 클래스의 종류와 유효범위(scope)는 변수와 동일
내부 클래스에서는 static 멤버를 가지려면 내부 클래스가 static 클래스가 되어야 한다.
static final 은 내부클래스가 static 클래스가 아니어도 가능 (상수는 가능)
static 내부 클래스에는 외부의 멤버변수에 접근할 수 없다.
static 멤버/이너클래스 > 인스턴스 멤버/이너클래스 접근 불가
인스턴스 멤버/이너클래스 > static 멤버/이너클래스 접근 가능
class Outer{
pirvate int outerIv = 0;
static int outerCv = 0;
void myMethod(){
int lv = 0;
final int LV = 0;
class LocalInner{
int liv = outerIv;
int liv2 = outerCv;
// 외부 클래스의 지역변수는 final이 붙은 변수(상수)만 접근 가능하다.
// 이유는 내부 클래스의 객체가 더 오래 존재가능하기 때문에
// int liv3 = lv; // 에러이지만 JDK 1.8 부터는 가능하다.
// JDK 1.8에서는 값이 변경이 안되면 상수로 취급하기 때문
int liv4 = LV;
}
}
}
내부 클래스의 인스턴스는 외부 클래스의 인스턴스를 먼저 생성 해야 가능
스태틱 내부 클래스의 인스턴스는 외부 클래스를 먼저 생성하지 않아도 된다.
익명 클래스(anonymous class)
- 이름이 없는 일회용 클래스. 정의와 생성을 동시에
new 조상클래스이름(){
// 멤버 선언
}
또는
new 구현인터페이스이름(){
// 멤버 선언
}
반응형
'개발' 카테고리의 다른 글
Java - Object 클래스 (0) | 2021.06.05 |
---|---|
Java - 오류 / 예외 처리하기 (0) | 2021.06.05 |
Java - 인터페이스 (0) | 2021.06.05 |
Java - 추상클래스 (0) | 2021.06.05 |
Java - 객체지향개념 (0) | 2021.05.30 |