Duvida test killer questão 8

Question 8
Assume that country is set for each class.
Given:
10. public class Money {
11. private String country, name;
12. public getCountry() { return country; }
13.}
and:
24. class Yen extends Money {
25. public String getCountry() { return super.country; }
26. }
27.
28. class Euro extends Money {
29. public String getCountry(String timeZone) {
30. return super.getCountry();
31. }
32. }
Which two are correct? (Choose two.)
A. Yen returns correct values.
B. Euro returns correct values.
C. An exception is thrown at runtime.
D. Yen and Euro both return correct values.
E. Compilation fails because of an error at line 25.
F. Compilation fails because of an error at line 30.
Answer: BE

Qual sua dúvida?

Coloque o código entre as tags “[code]”

O unico problema é que a variavel é private???

Acabei de postar meu relato sobre o testkiller…
Esse é um exemplo de questão com problemas!

public class Money {
private String country, name;
public getCountry() { return country; } // aqui você ja podia marcar "Compilation fails"
} 

Não existe método sem retorno.
Ai aparentemente ocorre um erro na linha 25 porque esse método vai ser sobrescrito, so que… Como diabos da pra saber como sobrescrever um método que não tem retorno?

Não sei o que comentar sobre essa questão…
Se eu estiver errado, por favor me corrijam!

edit: Ah sim, posso falar que a “B” está certa, porque, de fato, a classe “Euro” herda “Money” mas não sobrescreve nada… Faz uma sobrecarga do método e retorna normalmente. Apesar dele chamar o método errado da classe pai…

Concordo com voce mas o gabarito não fala isso.
Acho que foi um erro de impressão
Acho que o problema é a variavel private

A variavel private não tem nenhum problema.

A classe “Money” usa encapsulamento para restringir o acesso a “country”.
Se em algum momento do código existisse a tentativa de acessar “country” (diretamente) fora da classe “Money”, aí sim, haveria outro erro de compilação.

Opa foi mal, na linha 25 a classe “Yen” tenta acessar money sem passar pelo método, então realmente há um problema com a variavel também.

edit2: então se o método da classe “Money” já não fosse escrito errado a resposta certa é essa mesmo. BE
Relaxa questão com erro de digitação não deve cair na prova =P

Given:
11. public class Person {
12. private name;
13. public Person(String name) {
14. this.name = name;
15. }
16. public int hashCode() {
17. return 420;
18. }
19. }
Which is true?
A. The time to find the value from HashMap with a Person key depends
on the size of the map.
B. Deleting a Person key from a HashMap will delete all map entries for
all keys of type Person.
C. Inserting a second Person object into a HashSet will cause the first
Person object to be removed as a duplicate.
D. The time to determine whether a Person object is contained in a
HashSet is constant and does NOT depend on the size of the map.
Answer: A

Porque é a A?

  1. private name; so matando mesmo quem fez esse simulado cade o tipo
    mas mesmo assim porque a resposta e A

Apesar de ter passado eu ainda to aprendendo também! #)

Caiu uma questão beeeeeeem parecida com essa na minha prova. So que ao inves de sobrescrever o método hashCode() era o método equals() =P.

Eu suponho que um mapa funciona da seguinte maneira:

Cada objeto é guardado em um “lugar” de acordo com seu HASH.

E quando você procura dentro de um map você acha os objetos de acordo com o HASH.

Se o HASH vai ser o mesmo para todos os objetos, todos os objetos ficaram dentro do mesmo “lugar”, no livro da Kathy ela chama de “baldes” ou alguma coisa parecida… Mas então, objetos diferentes, hahs iguais todos param no mesmo lugar dentro de um mapa.

Já que para procurar dentro do Map você usa o hash, quando você for procurar QUALQUER objeto da classe Person você vai parar no mesmo “balde” e dentro desse balde vão estar TODOS os objetos.
Ai pra achar o objeto que você quer ele faz um teste equals() nos objetos até encontrar o que você deseja (vamos dizer que tenha 10 objetos esse Map, então ele pode fazer até 10 testes equals() certo?).

Se o hashCode() sobrescrito devolvesse hashs diferentes pra todos os objetos, cada objeto entraria em um balde (cenario perfeito) e ao procurar o Map iria ao balde especifico que iria conter somente 1 objeto (1 teste equals()). Então com um hashCode() apropriado vai ter menos elementos por balde, logo, vai achar mais rapido o seu objeto.

ACHO que é isso…
Se estiver errado me corrijam! Hehe ainda estou aprendendo #).

Deu pra entender?

Valeu