정처LAB 자체 제작내용 검수 완료정처LAB 정보처리기사 필기 자체 제작 3회 · 프로그래밍 언어 활용 · Java 다형성 · 73번
Java의 필드 숨김과 메서드 오버라이딩을 함께 적용한 출력은?
class A {
int v = 1;
int get() { return v; }
}
class B extends A {
int v = 2;
int get() { return v; }
}
A x = new B();
System.out.print(x.v + " " + x.get());
1
1 1
오답 이유`x.v`만 보면 선언 타입 A의 필드 1이지만, `x.get()`은 실제 객체 B의 오버라이딩 메서드가 실행되므로 두 번째 값이 1일 수 없다.
2
1 2
정답 근거필드는 참조 변수의 선언 타입 A를 따라 1, 인스턴스 메서드는 실제 객체 B로 동적 디스패치되어 2를 반환하므로 `1 2`가 정답이다.