다음 Java 프로그램의 실행 결과를 쓰시오.
public class Main {
static class Parent {
int value(int n) { return n + 2; }
static String tag() { return "P"; }
}
static class Child extends Parent {
int value(int n) { return n + 3; }
static String tag() { return "C"; }
}
public static void main(String[] args) {
Parent ref = new Child();
System.out.print(ref.value(2) + ref.tag());
}
}모범답안
5P
풀이와 판단 근거
value는 인스턴스 메서드다. 실제 객체가 Child이기 때문에 오버라이딩된 Child의 메서드가 실행되어 2+3=5를 돌려준다.
tag는 static 메서드다. static 메서드는 오버라이딩되지 않고 숨겨지며 호출할 메서드는 참조 변수의 선언 타입인 Parent를 기준으로 정해진다.
그래서 P가 붙어 5P가 최종 출력에 나타난다.
자주 틀리는 지점
- 연산자 우선순위나 재귀 반환 순서를 생략하고 눈에 보이는 값만 바로 계산함
- 값 전달·참조 전달, 오버라이딩·오버로딩 또는 배열과 포인터의 차이를 혼동함
- 출력의 공백·줄바꿈·대소문자를 무시해 5P와 다른 형식으로 작성함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.