중첩 클래스란? (Nested Class)
- 클래스 안에 다른 클래스를 정의하는 것을 말합니다.
- 특정 클래스 내에서만 주로 사용할 목적으로 선언합니다.
중첩 클래스의 사용 이유는?
- 캡슐화 ★★★
- 관련된 기능(클래스)을 묶어서 사용한다.
- 다른 클래스에서는 필요없기 때문에 관련 클래스 내부에 묶어서 사용한다.
- 내부 클래스를 외부에 노출시키고 싶지 않을 때 사용한다.
- 외부클래스의 필드사용
- 중첩 클래스는 외부 클래스의 필드를 자유롭게 사용이 가능하다.(객체화 필요 없음)
- 중첩 클래스는 외부 클래스의 필드를 자유롭게 사용이 가능하다.(객체화 필요 없음)
- 가독성 및 유지 관리
- 그룹화 및 캡슐화를 통해 코드의 가독성과 유지관리를 향상한다.
<한 줄 요약>
중첩 클래스를 사용하는 이유는 코드 구조와 가독성을 개선하고 관련된 기능을 그룹화하기 위해서이다!
중첩 클래스의 종류
1. 내부 클래스 (Inner Class, Non-Static Nested Class, Instance Class)
- 외부 클래스의 내부에 정의된 클래스입니다.
- 외부 클래스와 결합된 기능을 구현할 때 사용합니다.
- 외부 클래스의 필드에 쉽게 접근할 수 있습니다. (객체화 필요 없음!!)
class A{
class B{/*···*/}
}
객체 생성 방법
A a = new A(); //외부 클래스의 객체를 먼저 생성해야한다.
A.B b = a.new B();
2. 정적 중첩 클래스 (Static Nested Class)
- 내부 클래스를 static으로 선언한 클래스입니다.
- 외부 클래스와 연관된 독립적인 클래스를 구현할 때 사용합니다.
- 외부 클래스의 멤버 중 static 멤버만 사용할 수 있다.
class A {
static class B {/*···*/}
}
객체 생성 방법
A.B b = new A.B(); //객체 생성 없이 정적 내부 클래스의 객체를 생성가능하다.
3. 지역 클래스 (Local Class)
- 메서드 내부에 정의된 클래스입니다.
- 특정 메서드에서만 필요한 기능을 구현할 때 사용됩니다.
- 메서드 내부에서 new를 사용하여 객체로 접근해야 합니다.
- 메서드 밖에서는 사용할 수 없습니다. (지역변수개념!!)
class A {
void method() {
class B {/*···*/}
}
}
객체 생성 방법
B b = new B(); //메서드 내에서 생성!!
'Java' 카테고리의 다른 글
[Java/자바] equals, hashCode 메서드에 대하여 (0) | 2023.09.07 |
---|---|
[Java/자바] toString() 메서드에 대하여 (0) | 2023.09.05 |
[Java/자바] StringBuilder와 String의 메서드들에 대하여. (getChars, setLength, append, toString, toCharArray, repeat) (0) | 2023.09.01 |
[Java/자바] 접근 제한자에 대하여. (Access Modifier) (0) | 2023.08.31 |
[Java/자바] 상속에서의 자동 타입 변환에 대하여 (w.다형성) (0) | 2023.08.30 |