코딩항해기

[과제/JAVA] 멘토시리즈 : 자바 - 13 내부클래스 응용문제 본문

problem solving/문제 풀기

[과제/JAVA] 멘토시리즈 : 자바 - 13 내부클래스 응용문제

miniBcake 2024. 7. 23. 20:01

 

 

 

 

[JAVA] 내부클래스, 익명클래스

내부 클래스두 클래스 간에 서로 쉽게 접근하여 사용할 수 있도록 만든 것이다.중첩 클래스라고도 하며, 바깥쪽 클래스를 외부 클래스, 안쪽 클래스를 내부 클래스라고 한다. 내부 클래스의 종

minibcake.tistory.com

 

 

문제 1. 다음 중 중첩 클래스에 대한 설명으로 틀린 것은 무엇일까요?

정적 내부 클래스는 프로그램 시작과 함께 메모리에 올라가기 때문에 언제 선언되어 메모리에 올라갈지 모르는 인스턴스 필드의 값을 사용할 수 없다. 따라서 정답은 3번

 

 

 

문제 2. 다음 중 로컬 클래스에 대한 설명으로 틀린 것은 무엇일까요?

로컬 클래스는 지역변수에 접근할 수 없지만 final이 붙은 경우에는 가능하다.

 

 

 

문제 3. 빈칸에 알맞은 코드를 작성해 보세요.

MyCar myCar = new MyCar();
MyCar.Promotion promotion = myCar.new Promotion();

 

 

문제 4. 다음 코드를 실행하면 오류가 발생합니다. 오류의 원인을 찾아 수정해보세요.

public class Test01 {
	int value;

	public Test01(int value) {
		super();
		this.value = value;
	}

	public int plus() {
		class Cal {
			public int add() {
				return value++;
			}
		}
		Cal cal = new Cal();
		return cal.add();
	}
}

 

해당 오류는 로컬 내부 클래스가 지역변수에 접근할 수 없어 발생한 오류다.

이 경우 필드값으로 빼서 생성자로 값을 받아주거나  final을 붙여 접근을 가능하게 해주면 되는데, 값을 변경해야하므로 final대신 외부클래스의 멤버값으로 옮겨주었다.

이 경우 value는 외부 클래스의 필드값이므로 this.가 붙지 않는다.