모두CBT

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이다.

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