Oracle 1z0-808 Exam: Question #6 해설
질문 원본 내용
Consider the following code:
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
}
}
Which two modifications, made independently, enable the code to compile? (Choose two.)
A. Make the method at line n1 public.
B. Make the method at line n2 public.
C. Make the method at line n3 public.
D. Make the method at line n3 protected.
E. Make the method at line n4 public.
질문 번역
다음은 Java 클래스와 메소드에 관한 코드 예시입니다:
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
}
}
이 코드를 컴파일하기 위해 독립적으로 어떤 두 가지 수정을 해야 합니까? (두 가지를 선택하시오.)
A. line n1의 메소드를 public으로 만듭니다.
B. line n2의 메소드를 public으로 만듭니다.
C. line n3의 메소드를 public으로 만듭니다.
D. line n3의 메소드를 protected로 만듭니다.
E. line n4의 메소드를 public으로 만듭니다.
정답: C와 E
해설
Java에서는 상속을 통해 오버라이드하는 메소드가 부모 클래스의 메소드와 동일하거나 더 높은 접근 수준을 가져야 합니다. 이 규칙에 따라 해석하면:
- ) :
Earth
클래스에서revolve
메소드의 접근 수준은 기본 접근 지정자를 가지고 있으므로, 이는 상위 클래스의protected
접근 수준보다 제한적입니다. 따라서 이 메소드의 접근 수준을public
또는protected
로 변경해야 합니다. 옵션 C가public
으로 변경하는 것을 제안하므로 정답입니다. - ) :
rotate
메소드는 추상 클래스Planet
에 정의된 추상 메소드를 구현합니다.rotate
메소드는protected
로 정의되어 있으며, 이를public
으로 변경해도 문제가 없습니다. 이렇게 하면 메소드의 접근 수준이 확장되고, 따라서 옵션 E가 또 다른 정답입니다.
옵션 A는 필요하지 않으며, 옵션 D는 protected
접근 지정자가 이미 상위 클래스에 있으므로 필요하지 않습니다. 또한, line n2의 메소드를 public
으로 변경하는 것(B 옵션)은 필수적이지 않지만, 이 변경이 있어도 코드는 컴파일될 것입니다.
따라서, 코드를 컴파일 가능하게 만드는 두 가지 수정은 옵션 C와 E입니다.
'Oracle 1z0-808 Exam' 카테고리의 다른 글
Oracle 1z0-808 Exam 2024: Question #8 (0) | 2024.02.20 |
---|---|
Oracle 1z0-808 Exam 2024: Question #7 (0) | 2024.02.19 |
Oracle 1z0-808 Exam 2024: Question #5 (0) | 2024.02.18 |
Oracle 1z0-808 Exam 2024: Question #4 (0) | 2024.02.18 |
Oracle 1z0-808 Exam 2024: Question #3 (1) | 2024.02.18 |
댓글