중첩 클래스 클래스 내부에 클래스를 만드는 것을 의미 프로그래밍을 할 때 여러 군데서 사용하는 클래스가 아니라면 파일을 새로 만들거나 코드의 아래부분으로 내려서 만들지 않고 바로 만들어서 바로 쓸수 있도록 하는 개념
경우에 따라서는 객체를 생성할 수 있는 부분이 클래스를 설계한 부분으로 한정 되는 경우도 있다. 클래스 내부에 만든 클래스를 Inner Class라고 부르며 Inner클래스를 감싸고 있는 클래스를 Outer Class라고 부른다.
일반 중첩 클래스
⊙ 클래스 내부에 클래스를 만들어서 사용하는 경우
⊙ Inner 클래스의 객체를 만들기
위해서는 반드시 Outer클래스의 객체를 생성하고 이를 통해 Inner클래스를
만들어야함.
⊙ Inner클래스는 Outer클래스의
맴버에 접근할수있지만 Outer클래스는 Inner클래스의 멤버에 접근할수없다.
Inner클래스의 멤버는 Outer클래스의 객체가 생성되어 있다는 가정하에
사용하므로 접근이 가능하지만 Outer클래스는 Inner클래스의 객체의 생성과
관계가 없으므로 Inner클래스에 대한 접근이 자유롭지 못하다.
static 중첩 클래스
⊙ 일반 중첩클래스에서 Inner클래스가 static으로 정의된 경우
⊙ Inner 클래스가 static으로 정의 되어 있어 Outer클래스의 객체 생성 없이 바로
객체 생성이 가능
⊙ Inner 클래스에서는 Outer클래스에 정의된 멤버중에 static 멤버만 접근이
가능. Outer클래스의 객체생성없이 바로 Inner클래스의 객체를 생성하므로
Outer클래스의 객체가 생성되지 않았다는 가정하여 개발을 해야한다.
메서드 내의 중첩 클래스
⊙ 클래스를 메서드 내부에 만든 경우를 의미
⊙ 메서드 내부에 만든 중첩 클래스는 다른 곳에서 참조 변수 조차 선언 할수
없다.
⊙ Inner 클래스에서는 클래스 내부에 선언한 변수만 사용할 수 있으며 클래스를
만든 메서드 내부에 있는 지역 변수중 final 변수만 접근이 가능. 그 외의 모든
변수는 접근이 불가능
익명 중첩 클래스
⊙클래스로부터 객체 생성을 할 때 클래스 내부 코드를 바로 작성하는 것을
의미
⊙ 원본 클래스가 가지고 있는 메서드를 Overriding 해야 할 경우 상속 받은
클래스를 만들지 않고 바로 Overriding을 할수있다.
댓글 없음:
댓글 쓰기