코딩항해기
[과제/JAVA] 멘토시리즈 : 자바 - 13 내부클래스 응용문제 본문
문제 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.가 붙지 않는다.
'problem solving > 문제 풀기' 카테고리의 다른 글
[과제/JAVA] 멘토시리즈 : 자바 - 15 기본 API 클래스 응용문제 (0) | 2024.07.25 |
---|---|
[과제/JAVA] 멘토시리즈 : 자바 - 14 예외처리 응용문제 (0) | 2024.07.24 |
[과제/JAVA] 멘토시리즈 : 자바 - 12 추상·인터페이스 응용문제 (0) | 2024.07.22 |
[과제/JAVA] 멘토시리즈 : 자바 - 11 다형성과 타입변환 응용문제 (0) | 2024.07.22 |
[과제/JAVA] 멘토시리즈 : 자바 - 10 상속 응용문제 (0) | 2024.07.21 |