Dúvida para certificação

Já entendi que void indica que o método não tem retorno, mas alguém pode me explicar o código abaixo?

De acordo com as regras de sobreescrita (overhide), a partir de java 1.5, o método sobreescrito pode ter um retorno diferente do método original, desde que o método sobreescrito retorne um subtipo do método original, mas e se o método original for void?

public class Foo {

void go () { }

}

public class Bar extends Foo {

String go () { // sobrescrição válida em Java 1.5??? Mas void não retorna nada??? Arrrrrrrrghhhhhhhhhhhhh!!!

return null;
}
}

você não está redefinindo o método, vc está criando um novo método, para redefinição do método na subclasse a assinatura tem que ser idêntica.

Você tentou compilar esse código? Tenho a impressão que não vai funcionar.

Calma tiuzinho. Isso é mais um dos errinhos do livro, procura pelas erratas que ele vai estar lá! :-] No primeiro método era para ser Object go()

Valeu peerless, era isso mesmo.