다음 Java 프로그램에서 부모와 자식에 같은 이름으로 선언된 필드가 각각 어떻게 사용되는지 추적하여 출력 결과를 쓰시오.
class Base {
int score = 5;
Base() {
score += 2;
}
int total() {
return score * 2;
}
}
class Derived extends Base {
int score = 40;
Derived() {
score += 3;
}
int combined() {
return super.score + score;
}
}
public class Main {
public static void main(String[] args) {
Derived item = new Derived();
Base view = item;
System.out.print(item.combined() + ":" + view.total());
}
}모범답안
50:14
풀이와 판단 근거
Base 생성 시 부모 score는 5에서 7이 된다. 그 뒤 Derived의 별도 score가 40으로 초기화되고 생성자에서 43이 된다.
combined는 `super.score` 7과 자식 score 43을 더해 50을 반환한다. total은 Base에 정의되어 부모 필드 score 7을 읽으므로 14다.
같은 이름의 두 필드는 한 저장 공간으로 합쳐지지 않는다.
자주 틀리는 지점
- 부모와 자식 score를 하나의 필드로 합쳐 계산함
- Base.total이 자식 score 43을 읽어 86을 반환한다고 봄
- 부모 생성자가 자식 필드 초기화 뒤 실행된다고 순서를 바꿈
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.