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

Oracle 1z0-808 Exam 2024: Question #11

by Status Code 2024. 2. 23.

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

질문 원본 내용

Given:

interface Readable {
    public void readBook();
    public void setBookMark();
}

abstract class Book implements Readable { // line n1
    public void readBook() { } // line n2
}

class EBook extends Book { // line n3
    public void readBook() { } // line n4
}

And given the code fragment:

Book book1 = new EBook();
book1.readBook();

Which option enables the code to compile?

A) Replace the code fragment at line n1 with:

class Book implements Readable {

B) At line n2 insert:

public abstract void setBookMark();

C) Replace the code fragment at line n3 with:

abstract class EBook extends Book {

D) At line n4 insert:

public void setBookMark() { }

질문 번역

다음은 Java 인터페이스와 추상 클래스에 관한 코드 예시입니다:

interface Readable {
    public void readBook();
    public void setBookMark();
}

abstract class Book implements Readable { // line n1
    public void readBook() { } // line n2
}

class EBook extends Book { // line n3
    public void readBook() { } // line n4
}

// 그리고 이 코드 조각이 주어졌습니다:
Book book1 = new EBook();
book1.readBook();

다음 중 어떤 옵션이 코드를 컴파일할 수 있게 합니까?

A) line n1에서 코드 조각을 다음과 같이 바꿉니다:

class Book implements Readable {

B) line n2에서 다음을 삽입합니다:

public abstract void setBookMark();

C) line n3에서 코드 조각을 다음과 같이 바꿉니다:

abstract class EBook extends Book {

D) line n4에서 다음을 삽입합니다:

public void setBookMark() { }

정답: B와 D

해설

Readable 인터페이스는 readBooksetBookMark 두 메소드를 정의합니다. Book 클래스는 Readable 인터페이스를 구현하므로, Readable 인터페이스의 모든 메소드를 구현하거나 Book 클래스를 추상 클래스로 선언해야 합니다.

  • 옵션 A는 Book 클래스가 이미 Readable 인터페이스를 구현하고 있으므로, 코드를 바꾸는 것만으로는 충분하지 않습니다.
  • 옵션 B는 Book 클래스에 setBookMark 메소드를 abstract로 선언하는 것을 제안합니다. 추상 클래스는 추상 메소드를 포함할 수 있으므로, 이 변경은 Book 클래스가 Readable 인터페이스의 모든 메소드를 구현하지 않아도 되게 합니다. 따라서 이 옵션은 유효합니다.
  • 옵션 C는 EBook 클래스를 추상 클래스로 바꾸는 것을 제안하지만, EBook 클래스는 이미 Book 클래스의 readBook 메소드를 구현하고 있으며, 이 변경 자체가 코드를 컴파일 가능하게 만들지는 않습니다.
  • 옵션 D는 EBook 클래스에 setBookMark 메소드의 구체적인 구현을 추가합니다. EBook 클래스는 Book 클래스를 확장하고 Book 클래스가 Readable 인터페이스를 구현하므로, setBookMark 메소드를 구현하는 것은 Readable 인터페이스의 계약을 만족시키는 유효한 방법입니다. 따라서 이 옵션도 유효합니다.

결과적으로, 코드를 컴파일 가능하게 하는 옵션은 B와 D입니다.

댓글