20-2아래 Java 프로그램의 실행 결과를 적으시오.class Cou… | 2020년 정보처리기사실기 2회차 기출문제 상세 페이지
5
20-2
아래 Java 프로그램의 실행 결과를 적으시오.
class Counter {
private int base;
public Counter(int base) {
this.base = base * 3;
}
public void show() {
System.out.println("base=" + base);
}
}
class StepCounter extends Counter {
public StepCounter(int base) {
super(base + 2);
super.show();
}
@Override
public void show() {
System.out.println("step");
}
}
public class Main {
public static void main(String[] args) {
Counter c = new StepCounter(4);
}
}해설
base=18
[해설]
자식 객체를 만들면 자식 생성자 첫 줄의 super(...)가 부모 생성자를 먼저 실행한다.
StepCounter(4)는 super(4 + 2)를 호출하므로 부모 생성자에서 base가 정해진다.
base = 6 × 3 = 18
이어서 호출되는 super.show()는 재정의된 자식 show()가 아니라 부모 show()를 직접 부른다. 그래서 "step"이 아니라 base=18이 출력된다.
혼동 주의: super. 없이 show()만 불렀다면 동적 바인딩 때문에 "step"이 출력된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.