Given:
And given the code fragment:
What is the result?
A. Compilation fails at line n2.
B. Read Book
C. Read E-Book
D. Compilation fails at line n1.
E. Compilation fails at line n3.
Given:
And given the code fragment:
What is the result?
A. Compilation fails at line n2.
B. Read Book
C. Read E-Book
D. Compilation fails at line n1.
E. Compilation fails at line n3.
E
All the unimplemented methods have to be implemented in the first concrete class(non abstract/interface). In Ebook we should have an implementation of download() because we’re in debt at that point
E:
# javac Test22.java
Test22.java:15: error: EBook is not abstract and does not override abstract method download() in Downloadable
class EBook extends Book {
^
1 error
Answer E:
The interface Readable inherits all methods of Downloadable interface. Therefore, “Readable” receives a “copy” so to say, of the method “Download()”. Now comes the abstract class “Book” which implements the interface “Readable”. In normal cases, any class that implements an interface, have to implement all of the interface’s abstract methods. But because the class “Book” is abstract by nature, it is not required to directly implement the interface’s methods. However, it gives this responsibility to its first concrete class, which is in our case class “Ebook”. Therefore, class “Ebook” must implement both readBood() as well as download() methods.
Therefore, the compilation fails at the definition of the Ebook class.
E
class EBook, since it’s the first concrete class that inherits all the abstract classes, it should implement any that haven’t been done already. So abstract class Book implements readBook(), this is fine. However download() has been forgotten about and it’s down to Ebook to implement it