중첩클래스

2023. 8. 14. 12:17Spring 활용 통합 시스템 개발/자바

중첩 클래스 : 클래스 내부에 선언한 클래스.

멤버 클래스 : 클래스의 멤버로서 선언되는 중첩 클래스

    - 인스턴스 멤버 클래스 : A 객체를 생성해야만 B 객체를 생성할 수 있다

    - 정적 멤버 클래스 : A 객체를 생성하지 않아도 B 객체를 생성할 수 있다

로컬 클래스 : 메소드 내부에서 선언되는 중첩 클래스

 

A클래스와 B클래스를 따로 만들어도 되는 것은 A클래스 안에 B클래스를 넣은 형태가 된다.

 

A클래스의 멤버로 선언된 B 클래스

B 클래스(인스턴스 멤버 클래스)는 주로 private 접근 제한을 갖는 것이 일반적이다

 

 

중첩 클래스 예제

 

 

 

Nestedclass 객체 생성을 for() 밖에서 하고 배열 buf에 NestedClass 객체를 넣은 경우 

// *** getInfo() 구현할 때 NestedClass[] buf에 NestedClass nc의 변수를 넣는 것이 어려웠다
// nc.변수에 임의의 값을 넣고 nc의 객체를 배열buf에 대입함으로써 배열buf에 nc 주소를 넘겨준다
// 배열 buf에서 nc의 주소를 받아 showInfo() 메소드를 호출해서 nc를 출력하면 nc 변수에 50번째 값만 입력된다
// getInfo() 메소드에 for 반복이 끝나고 마지막에 buf[49]만 nc의 주소를 받아 50번째 값만 출력된다

// 33번줄이 for() 반복문 밖에 있어서 nc 객체의 주소가 고정되어 있다

// nc가 고정된 상태에서 for()으로 nc 변수에 값을 저장하고 같은 nc 주소를 매번 배열 buf에 전달하기 때문에 똑같은 값이 출력된다 

 

50번째 값만 출력된다 -> 원하는 결과는 1~50을 출력하는 것이다.

 

수정된 코드 - 31번줄, 44번줄

for() 반복문 안에 NestedClass 객체를 생성하면 반복할 때마다 새로운 nc 객체가 생성되고 생성될 때마다 nc 변수에 값이 저장되고 nc의 주소를 배열 buf에 넘겨준다

 

 

'Spring 활용 통합 시스템 개발 > 자바' 카테고리의 다른 글

컬렉션-Map  (0) 2023.08.17
컬렉션(Collection) - List  (0) 2023.08.16
인터페이스 예제  (0) 2023.08.10
자바 코딩 연습문제  (0) 2023.08.09
인터페이스  (0) 2023.08.09