(Java) 중첩 클래스 (자바 4대 중첩 클래스)
1. 중첩 클래스( Inner Class)
->하나의 클래스 내부에 또 다른 클래스가 내포되어 있는 상태(클래스 관리의 효율을 높임)
*특징
-중첩되는 클래스는 하나 이상 가능.
-Outer 클래스 멤버를 Inner 클래스에서 사용가능
-Outer 클래스에서 Inner 클래스 멤버 사용불가능 (사용하고 싶으면 객체를 직접 발생시켜야함)
- 일반 중첩 클래스 내부에서는 static과 관련된 멤버를 선언할 수 없음
예)
Class Outer{
내용부:
class Inner{
내용부:
}
}
}
* 중첩 클래스 객체 생성
Outer 객체 1=new Outer();
Outer.Inner 객체2=객체1.new Inner();
2. 정적 중첩 클래스 (Static Inner Class)
*정의
- 중첩 클래스 내부에서 static과 관련된 멤버를 선언할 수 있는 클래스.
*특징
- 클래스의 이름 앞에 static 예약어가 붙음
- static의 특성상 객체를 독립적으로 만들 수 있음
- static멤버를 선언할 수 있고, static 메소드도 만들어 사용할 수 있음.
- Outer 클래스의 static멤버만 Inner에서 사용할 수 있음
*형식
class Outer{
내용부:
static class Inner{
내용부:
}
}
*객체 생성 방법
->하나의 클래스 내부에 또 다른 클래스가 내포되어 있는 상태(클래스 관리의 효율을 높임)
*특징
-중첩되는 클래스는 하나 이상 가능.
-Outer 클래스 멤버를 Inner 클래스에서 사용가능
-Outer 클래스에서 Inner 클래스 멤버 사용불가능 (사용하고 싶으면 객체를 직접 발생시켜야함)
- 일반 중첩 클래스 내부에서는 static과 관련된 멤버를 선언할 수 없음
예)
Class Outer{
내용부:
class Inner{
내용부:
}
}
}
* 중첩 클래스 객체 생성
Outer 객체 1=new Outer();
Outer.Inner 객체2=객체1.new Inner();
2. 정적 중첩 클래스 (Static Inner Class)
*정의
- 중첩 클래스 내부에서 static과 관련된 멤버를 선언할 수 있는 클래스.
*특징
- 클래스의 이름 앞에 static 예약어가 붙음
- static의 특성상 객체를 독립적으로 만들 수 있음
- static멤버를 선언할 수 있고, static 메소드도 만들어 사용할 수 있음.
- Outer 클래스의 static멤버만 Inner에서 사용할 수 있음
*형식
class Outer{
내용부:
static class Inner{
내용부:
}
}
*객체 생성 방법
Outer.Inner 객체 = new Outer.Inner(); |
- Outer 클래스의 객체가 없어도 Inner 클래스의 객체 생성 가능.'
3. 지역 중첩 클래스( Local Inner Class)
*정의
특정 메소드에 한정적인 용도로 사용하는 클래스
*특징
- 접근 제한자와 지정 예약어를 사용할 수 없는 형태.
- 일반 중첩 클래스의 형태와 유사하기 때문에 static 멤버를 선언하지 못함.
- 객체 생성은 외부에서 할 수 없음.
- 일반 중첩 클래스의 형태와 유사하기 때문에 static 멤버를 선언하지 못함.
- 객체 생성은 외부에서 할 수 없음.
class Outer{
내용부;
method(){
내용부;
class Inner{
내용부;
}
}
}
4. 익명 중첩 클래스 (Anonymous Inner Class)
*정의 : 1. 지역 중첩 클래스의 변형된 형태, 2. 기존 클래스의 특정 메소드를 오버라이딩하여 원하는 형태로 재정의하여 사용하는 방식
*특징: -class 예약어와 클래스 며을 가지지 않고 단지 instance의 생성과 내용부의 정의만 가짐 , - 여기에 사용되는 중첩 클래스는 이미 기존에 존재하는 클래스이어야 함
-내부 클래스는 생성자를 작성할 수 없음. (생성자를 작성하게 되면 컴파일에러 발생)
- 외부 멤버 중 final만 포함
댓글
댓글 쓰기