23-1아래 Java 프로그램의 출력 결과를 적으시오.class Bas… | 2023년 정보처리기사실기 1회차 기출문제 상세 페이지
17
23-1
아래 Java 프로그램의 출력 결과를 적으시오.
class Base {
int v = 10;
Base() {
this(70);
}
Base(int v) {
this.v = v * 2;
}
int getV() {
return v;
}
}
class Derived extends Base {
int v = 300;
Derived() {
this(900);
}
Derived(int v) {
this.v = v;
}
}
public class Main {
public static void main(String[] args) {
Derived d = new Derived();
System.out.print(d.getV() + " " + d.v);
}
}해설
140 900
[해설]
new Derived()는 Derived()에서 this(900)으로 넘어가고, Derived(int)의 첫 줄에 생략된 super()가 먼저 실행된다.
- Base(): this(70) 호출
- Base(int): Base의 v = 70 * 2 = 140
- Derived 필드 초기화: Derived의 v = 300
- Derived(int): Derived의 v = 900
getV()는 Base에 정의되어 Base의 v를 돌려주므로 140이다. 필드는 오버라이딩되지 않고 숨겨질 뿐이라, d.v는 Derived 쪽 900이다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.