(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 객체 = new Outer.Inner();
    -  Outer 클래스의 객체가 없어도 Inner 클래스의 객체 생성 가능.'

3. 지역 중첩 클래스( Local Inner Class)
*정의
특정 메소드에 한정적인 용도로 사용하는 클래스
*특징
- 접근 제한자와 지정 예약어를 사용할 수 없는 형태.
    - 일반 중첩 클래스의 형태와 유사하기 때문에 static 멤버를 선언하지 못함.
    - 객체 생성은 외부에서 할 수 없음.
class Outer{
내용부;
method(){
내용부;
class Inner{
내용부;
}
}
}

4. 익명 중첩 클래스 (Anonymous Inner Class)
*정의 : 1. 지역 중첩 클래스의 변형된 형태, 2. 기존 클래스의 특정 메소드를 오버라이딩하여 원하는 형태로 재정의하여 사용하는 방식
*특징:  -class 예약어와 클래스 며을 가지지 않고 단지 instance의 생성과 내용부의 정의만 가짐 , - 여기에 사용되는 중첩 클래스는 이미 기존에 존재하는 클래스이어야 함
-내부 클래스는 생성자를 작성할 수 없음. (생성자를 작성하게 되면 컴파일에러 발생)
- 외부 멤버 중 final만 포함







댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬