본문 바로가기
Oracle 1z0-808 Exam

Oracle 1z0-808 Exam 2024: Question #7

by Status Code 2024. 2. 19.

Oracle 1z0-808 Exam: Question #7 해설

질문 원본 내용

Given the following class declarations:

abstract class Planet {
    protected void revolve() { // line n1
    }

    abstract void rotate(); // line n2
}

class Earth extends Planet {
    void revolve() { // line n3
    }

    protected void rotate() { // line n4
    }
}

And the following main method:

Car c1 = new Car("Auto");
Car c2 = new Car("4W", 150, "Manual");
System.out.println(c1.type + " " + c1.maxSpeed + " " + c1.trans);
System.out.println(c2.type + " " + c2.maxSpeed + " " + c2.trans);

What is the result?

A. 4W 100 Auto 4W 150 Manual
B. null 0 Auto 4W 150 Manual
C. Compilation fails only at line n1
D. Compilation fails only at line n2
E. Compilation fails at both line n1 and line n2


질문 번역

다음은 Java 클래스와 생성자에 관한 코드 예시입니다:

class Vehicle {
    String type = "4W";
    int maxSpeed = 100;

    Vehicle(String type, int maxSpeed) {
        this.type = type;
        this.maxSpeed = maxSpeed;
    }
    Vehicle() {}
}

class Car extends Vehicle {
    String trans;

    Car(String trans) { // line n1
        this.trans = trans;
    }

    Car(String type, int maxSpeed, String trans) { // line n2
        super(type, maxSpeed);
        this.trans = trans;
    }
}

그리고 다음 코드를 실행할 때 결과는 무엇일까요?

Car c1 = new Car("Auto");
Car c2 = new Car("4W", 150, "Manual");
System.out.println(c1.type + " " + c1.maxSpeed + " " + c1.trans);
System.out.println(c2.type + " " + c2.maxSpeed + " " + c2.trans);

A. 4W 100 Auto 4W 150 Manual
B. null 0 Auto 4W 150 Manual
C. line n1에서만 컴파일 실패
D. line n2에서만 컴파일 실패
E. line n1과 line n2 모두에서 컴파일 실패

정답: A. 4W 100 Auto 4W 150 Manual

해설

이 코드를 분석하면 다음과 같습니다:

  • Car 클래스는 Vehicle 클래스를 확장(상속)합니다.
  • Car 클래스에는 두 개의 생성자가 있습니다. 첫 번째 생성자(Car(String trans))는 trans 필드만 초기화하고, 두 번째 생성자(Car(String type, int maxSpeed, String trans))는 super(type, maxSpeed)를 호출하여 부모 클래스(Vehicle)의 typemaxSpeed 필드를 초기화한 다음, trans 필드를 초기화합니다.
  • Car 객체 c1은 첫 번째 생성자를 사용하여 생성되며 trans만 "Auto"로 설정됩니다. typemaxSpeedVehicle 클래스에서 선언된 기본값인 "4W"와 100을 갖게 됩니다.
  • Car 객체 c2는 두 번째 생성자를 사용하여 생성되며, type, maxSpeed, trans 모두 명시적으로 설정됩니다.

코드에는 컴파일을 방해할 만한 문제가 없으므로, 컴파일 오류에 대한 옵션 C, D, E는 모두 부정확합니다.

코드가 성공적으로 컴파일되고 실행된다면, c1c2 객체의 필드는 다음과 같이 출력됩니다:

  • c1type: "4W" (부모 클래스 Vehicle의 기본값)
  • c1maxSpeed: 100 (부모 클래스 Vehicle의 기본값)
  • c1trans: "Auto" (생성자에서 설정된 값)
  • c2type: "4W" (생성자에서 설정된 값)
  • c2maxSpeed: 150 (생성자에서 설정된 값)
  • c2trans: "Manual" (생성자에서 설정된 값)

따라서 출력 결과는 "4W 100 Auto 4W 150 Manual"이 되며, 올바른 답변은 A입니다.

댓글