모두CBT

21-2아래 Java 프로그램이 출력하는 값을 적으시오.class Ca… | 2021년 정보처리기사실기 2회차 기출문제 상세 페이지

3

21-2

아래 Java 프로그램이 출력하는 값을 적으시오.

class Calc {
    int op(int p, int q) {
        return p * q;
    }
}

class SubCalc extends Calc {
    int op(int p, int q) {
        return super.op(p, q) - (p + q);
    }
}

public class Main {
    public static void main(String[] args) {
        Calc c1 = new Calc();
        Calc c2 = new SubCalc();
        System.out.print(c1.op(4, 3) + c2.op(4, 3));
    }
}
해설

17


[해설]

c2는 Calc 타입이지만 실제 객체가 SubCalc이므로, 동적 바인딩에 따라 오버라이딩된 SubCalc.op()가 실행된다.

c1.op(4, 3) = 4 × 3 = 12
c2.op(4, 3) = super.op(4, 3) − (4 + 3) = 12 − 7 = 5
출력 = 12 + 5 = 17

혼동 주의: super.op()는 부모 Calc에 있는 원래 메서드를 부르므로 재귀 호출이 되지 않는다.

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