모두CBT

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"이 출력된다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.