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에 있는 원래 메서드를 부르므로 재귀 호출이 되지 않는다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.