Se não me falhe a memória tu não podes sobrescrever Programmer debug() { return this; } com Object debug() { return this; } porque Object não extende Programmer. Porém esta correto vc retornar um SCJP para um Object porque SCJP É-UM Object.
Rafael_Nunes
Preste atenção n o retorno do método debug.
Todo Programmer é um Object, mas nem todo Object é um Programmer. No método da classe você poderia retornar uma String, que também é um Object, mas String não tem relação nenhuma com o Programmer definido no método debug da classe pai.
Para que haja uma sobreescrita, você deve respeitar a assinatura do método da classe pai, e neste caso, utilizando covariância, na classe pai deveria retornar um Object, e na classe filha retornar qualquer sub-tipod e Object
L
lavaliante
Obrigado Rafael e Higor!
Foi bobeira minha mesmo…
Eu tinha entendido que eu poderia retornar tanto SCJP ou Programmer no método, mas não tinha sacado que nem todo Object é um SCPJ ou Programmer…
Vou tentar uma mais difícil na próxima!
obrigado!
Raff
lavaliante:
Olá a todos!
Sou novo aqui no fórum e estou estudando para tirar a certificação…
Estou com o livro da Kathy Sierra e no capítulo de OO fiquei com uma dúvida e gostaria de saber se alguém aqui sabe responder.