Oi pessoal, sou novo no fórum e estou estudando Java pra certificação. Já aprendi muita coisa na faculdade, mas as vezes aprendemos de uma forma bruta, sem entender bem o porquê de conceitos básicos - só agora lendo o livro que mta coisa tá ficando clara pra mim. Estou estudando pelo livro da Kathy Sierra SCJP 6 e há uma questão que não estou concordando com a resposta. Me ajudem por favor. Segue a questão:
Given:
1. public class Electronic implements Device
{ public void doIt() { } }
2.
3. abstract class Phone1 extends Electronic { }
4.
5. abstract class Phone2 extends Electronic
{ public void doIt(int x) { } }
6.
7. class Phone3 extends Electronic implements Device
{ public void doStuff() { } }
8.
9. interface Device { public void doIt(); }
What is the result? (Choose all that apply.)
A. Compilation succeeds
B. Compilation fails with an error on line 1
C. Compilation fails with an error on line 3
D. Compilation fails with an error on line 5
E. Compilation fails with an error on line 7
F. Compilation fails with an error on line 9
Answer:
✓ A is correct; all of these are legal declarations.
B, C, D, E, and F are incorrect based on the above information. (Objective 1.2)
eu havia marcado letra E(falha de compilação na linha 7). Entendo eu o seguinte, quando tenho uma classe implementando uma interface, devo implementar obrigatoriamente todos os métodos da interface como é o caso na linha 1. Linhas 3 e 5 estendiam a classe em 1 e nesse caso a implementação dos métodos é opcional. Linha 9 declara a interface. OK. Mas na 7 a classe concreta não tem obrigação de implementar métodos das classes abstratas, mas ela implementa a interface Device, então deveria implementar os métodos desta referida interface obrigatoriamente? Não?