Certificação Java SCJP

Click the Exhibit button.

  1. public interface A {
  2. public void doSomething(String thing);
  3. }
  4. public class AImpl implements A {
  5. public void doSomething(String msg) { }
  6. }
  7. public class B {
  8. public A doit() {
  9. // more code here
  10. }
  11. public String execute() {
  12. // more code here
  13. }
  14. }
  15. public class C extends B {
  16. public AImpl doit() {
  17. // more code here
  18. }
  19. public Object execute() {
  20. // more code here
  21. }
  22. }

Qual afirmação é verdadeira sobre as classes e interfaces na
exposição?

A. Compilation will succeed for all classes and interfaces.
B. Compilation of class C will fail because of an error in line 2.
C. Compilation of class C will fail because of an error in line 6. - - Não entendi o porque a resposta correta é esta ??
D. Compilation of class AImpl will fail because of an error in line 2.

Estou prestes a fazer a prova da certificação, se alguem puder me ajudar agradeço!

Você está sobrescrevendo o método “public String execute()” com a assinatura “public Object execute()”. Essa questão é sobre retornos covariantes. Sobrescrever o método ampliando de String pra Object não é permitido. O contrário você poderia fazer.

Vlw Wilson!! Só uma pergunta se fosse um metodo com retorno do tipo int eu posso sobrescrever com Integer?

$RDS$,

Não pode não.

Sugiro que você vá codificando os exemplos pra testar e tentar entender. Isso vai ajudar você a memorizar tudo.

Outra coisa é que na minha opnião estudar pelo TestKiller é meio que furada, o legal é estudar por um material sério como o livro da Kathy (SCJP 6). Depois existem outros simulados melhores pra você fazer antes da prova, eu fiz o MasterExam, Whizlabs, ExamLab e Inquisition…

Abraço e bons estudos.

int é tipo primitivo e Integer é classe.

Faça esse teste e vc entenderá melhor:

Dado:
11. public class Yikes {
12.
13. public static void go(Long n) {System.out.println("Long ");}
14. public static void go(Short n) {System.out.println("Short ");}
15. public static void go(int n) {System.out.println("int ");}
16. public static void main(String [] args) {
17. short y= 6; 
18. long z= 7;
19. go(y);
20. go(z);
21. }
22. }

Qual será o resultado?

A. int Long
B. Short Long
C. Erro de compilação.
D. É lançada uma exceção em tempo de execução


/******************************/
Dado:
12. public class Wow {
13. public static void go(short n) {System.out.println("short"); }
14. public static void go(Short n) {System.out.println("SHORT");}
15. public static void go(Long n) {System.out.println(" LONG"); }
16. public static void main(String [] args) {
17. Short y= 6;
18. int z=7; 
19. go(y);
20. go(z);
21. }
22. }

Qual será o resultado?

A. short LONG
B. SHORT LONG
C. Erro de compilação.
D. É lançada uma exceção em tempo de execução

Valeu