다음 Java 프로그램의 실행 결과를 쓰시오.
public class Main {
public static void main(String[] args) {
new Derived();
System.out.println(Base.total);
}
}
class Base {
static int total = 0;
int value = 1;
Base() {
total += ++value;
update();
}
void update() {
total += total;
}
}
class Derived extends Base {
int value = 10;
Derived() {
value += 2;
total += value++;
update();
}
@Override
void update() {
total += total * 2;
}
}모범답안
54
풀이와 판단 근거
Base 생성자에서 Base의 value는 2가 되고 total도 2가 된다. 생성자 안의 update는 동적 바인딩으로 Derived의 메서드를 호출하므로 total은 2 + 4 = 6이 된다.
그다음 Derived의 value가 10으로 초기화된다. 생성자에서 12가 된 value를 total에 더하면 18이고, 마지막 update가 18에 36을 더해 최종값 54를 만든다.
자주 틀리는 지점
- 연산자 우선순위나 재귀 반환 순서를 생략하고 눈에 보이는 값만 바로 계산함
- 값 전달·참조 전달, 오버라이딩·오버로딩 또는 배열과 포인터의 차이를 혼동함
- 출력의 공백·줄바꿈·대소문자를 무시해 54와 다른 형식으로 작성함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.