중첩 클래스
- 클래스 내부에 선언한 클래스. 클래스의 멤버를 쉽게 사용할 수 있고 외부에는 중첩 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있음
- 멤버 클래스: 클래스의 멤버로서 선언되는 중첩 클래스
- 로컬 클래스: 메소드 내부에서 선언되는 중첩 클래스
출처, 이것이 자바다
인스턴스 멤버 클래스
- A 클래스의 멤버로 선언된 B 클래스
출처, 이것이 자바다
- 인스턴스 멤버 클래스 B는 주로 A 클래스 내부에서 사용되므로 private 접근 제한을 갖는 것이 일반적
package ch09.sec02.exam01;
/*
* 중첩클래스 : 클래스 내부에 클래스를 정의하는 개념.
*/
public class A {
//인스턴스 멤버클래스. new가 사용 안함.
class B { /* 내용 */ }
//인스턴스 필드사용
B field = new B(); //new가 힙영역에 메모리 생성
//생성자
A () {
B b = new B();
}
//인스턴스 메소드 : new가 메소드 코드만 정보를 저장.
void method() {
B b = new B();
}
}
package ch09.sec02.exam01;
public class AExample {
public static void main(String[] args) {
//A 객체 생성
A a = new A();
//B 객체 생성
A.B b = a.new B();
}
}
package ch09.sec02.exam02;
public class A {
//인스턴스 멤버 클래스
class B {
//인스턴스 필드
int field1 = 1;
B() {
System.out.println("B-생성자 실행");
}
//인스턴스 메소드
void method1() {
System.out.println("B-method1 실행");
}
}
//인스턴스 메소드
void useB() {
B b = new B();
System.out.println(b.field1);
b.method1();
}
}
package ch09.sec02.exam02;
public class AExample {
public static void main(String[] args) {
A a = new A();
a.useB();
}
}
'객체 지향 프로그래밍 - 중첩 선언과 익명 객체' 카테고리의 다른 글
익명 객체 (0) | 2023.01.25 |
---|---|
바깥 멤버 접근 (0) | 2023.01.25 |
로컬 클래스 (0) | 2023.01.25 |
정적 멤버 클래스 (0) | 2023.01.25 |