Questions
Question 1: What is wrong with the following interface:Answer 1:The documentation should reflect whypublic interface House {
@Deprecated
public void open();
public void openFrontDoor();
public void openBackDoor();
}open
is deprecated and what to use instead. For example:public interface House {
/**
* @deprecated use ofopen
is discouraged, use
*openFrontDoor
oropenBackDoor
instead.
*/
@Deprecated
public void open();
public void openFrontDoor();
public void openBackDoor();
}Question 2: Compile this program:
interface Closable {
void close();
}
class File implements Closable {
@Override
public void close() {
//... close this file...
}
}What happens? Can you explain why?
Answer 2: The compiler generates an error complaining that
File.close
doesn't override any method from its superclass. This is because it is not overridingClosable.close
, it is implementing it!Question 3: Consider this implementation of the
House
interface, shown in Question 1.If you compile this program, the compiler complains thatpublic class MyHouse implements House {
public void open() {}
public void openFrontDoor() {}
public void openBackDoor() {}
}open
has been deprecated (in the interface). What can you do to get rid of that warning?Answer 3: You can deprecate the implementation of
open
:public class MyHouse implements House {
//The documentation is inherited from the interface.
@Deprecated
public void open() {}
public void openFrontDoor() {}
public void openBackDoor() {}
}Alternatively, you can suppress the warning:
public class MyHouse implements House {
@SuppressWarnings("deprecation")
public void open() {}
public void openFrontDoor() {}
public void openBackDoor() {}
}
No comments:
Post a Comment