이것이 자바다 도서 정리
목차
- 중첩 클래스
- 인스턴스 멤버 클래스
- 정적 멤버 클래스
- 로컬 클래스
- 바깥 멤버 접근
- 중첩 인터페이스
- 익명 객체
중첩 클래스
- 클래스가 여러 클래스와 관계를 맺는 경우엔 독립적으로 선언하는 좋다.
- 그러나 특정 클래스만 관계를 맺을 경우, 중첩 클래스로 선언하는 것이 유지보수에 도움이 되는 경우가 많다.
중첩 클래스
클래스 내부에 선언한 클래스
- 클래스 멤버를 쉽게 사용할 수 있다.
- 외부엔 중첩 관계 클래스를 감추어, 코드의 복잡성을 줄일 수 있다.
- 멤버 클래스 : 클래스의 멤버로서 선언되는 중첩 클래스
- 로컬 클래스 : 메소드 내부에 선언되는 중첩 클래스
인스턴스 멤버 클래스
[public] class A {
[public || private] class B{
}
}
- 위와 같이 클래스 A의 멤버로 선언된 B를 인스턴스 멤버 클래스라고 한다.
- private class B{} : A 클래스 내부에서만 B 클래스를 사용할 수 있다.
- 물론 A 객체가 있어야 B 객체도 생성할 수 있다. 즉, B를 A 내부 어디에서나 생성할 수 없다.
A a = new A();
A.B b = a.new B();
- B 객체를 A 외부에 생성하기
정적 멤버 클래스
[public] class A {
[public || private] static class B{
}
}
- 정적 멤버 클래스는 static 키워드와 함께 선언된 것이다.
- B를 A의 어디에서나 생성할 수 있다.
A.B b = new A.B();
- A 객체 생성 없이 A 클래스로 접근해 B 객체를 생성할 수 있다.
로컬 클래스
[public] class A {
public A() {
class B {}
}
public void method() {
class B {}
}
}
- 생성자 또는 메서드 내부에 위와 같이 선언된 클래스
- 로컬 클래스는 생성자와 메소드가 실행될 동안에만 객체를 생성할 수 있다.
- 로컬 클래스 내부에는 필드, 생성자, 메소드 선언이 올 수 있다.
[public] class A {
public void method1(int arg) {
int aaa = 1;
class B {
// aaa = 2; (X)
// arg = 4; (X)
}
}
// aaa = 2; (X)
// arg = 4; (X)
}
- 로컬 변수를 로컬 클래스에서 사용할 경우, 값을 읽을수만 있고 수정할 수 없다.
바깥 멤버 접근
중첩 인터페이스
익명 객체
'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] 인터페이스 (0) | 2023.09.13 |
---|---|
[Java] 상속 (0) | 2023.09.12 |
[Java] Static (0) | 2023.06.30 |
[JAVA] 클래스 (0) | 2023.01.14 |
[JAVA] 참조 타입 (2) | 2022.11.08 |