반응형
Notice
Recent Posts
Recent Comments
Link
불로구
29강. (JAVA) 자바 - 중첩 클래스 본문
반응형
중첩 클래스
- 클래스 내부에 선언한 클래스
장점
- 두 클래스의 멤버들을 서로 쉽게 접근할 수 있다.
- 외부에는 불필요한 관계 클래스를 감춤으로써, 코드 복잡성 줄임
중첩 클래스 외에도 중첩 인터페이스도 생성할 수 있다.
1) 중첩 클래스
class A{
class B{
}
}
2) 중첩 인터페이스
class A{
interface B{
}
}
중첩 클래스의 종류
1) 멤버 클래스
1.1) 인스턴스 멤버 클래스
class A{
class B{ //A객체를 생성해야만 B클래스를 사용할 수 있다.
B();
int age;
void run(){}
// static 정적 사용 불가
}
}
A a = new A();
A.B b = new a.new B();
b.age = 25;
b.run();
A 클래스 외부에서 B 객체를 생성하려면 A 객체를 먼저 생성하고 B 객체를 생성해야 한다.
A 클래스 내부의 생성자 및 인스턴스 메서드에서 일반 클래스처럼 B 객체를 생성 가능하다!
1.2) 정적 멤버 클래스
class A{
static class B{...} // A클래스를 이용해 B클래스에 바로 접근가능
}
정적 멤버 클래스는 static 키워드로 선언된 클래스다.
정적 멤버 클래스는 모든 종류의 필드와 메서드 선언이 가능하다.
A 클래스 외부에서 정적 멤버 클래스 B의 객체를 생성하기 위해선 A 객체의 생성이 없이 사진처럼 B 객체를 생성하면 된다!
2) 로컬 클래스
class A{
void method() {
class B{ .. } //method가 실행할 때만 사용할 수 있다.
}
}
중첩 클래스는 메서드 내에서도 선언이 가능한데 이것을 로컬 클래스라고 한다.
로컬 클래스도 public, private, static을 붙일 수 없다.
로컬 클래스는 메서드 내부에서만 사용되므로 접근 제한이 필요 없기 때문이다!
다음 포스팅은 중첩 인터페이스에 대해 올리겠습니다~
혹시나 궁금한 점은 댓글로 남겨주세요!
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
30강. (JAVA) 자바 - 중첩 인터페이스 (0) | 2021.03.16 |
---|---|
[SpringFramework] - SpringSecurity를 이용한 로그인 설정 (0) | 2021.03.09 |
28강. (JAVA) 자바 - 인터페이스(interface) (0) | 2020.06.21 |
27강. (JAVA) 자바 - 추상 클래스, 추상화 (0) | 2020.06.19 |
26강. (JAVA) 자바 - 객체 타입 확인 (instanceof) (2) (0) | 2020.06.16 |
Comments