Olá a todos estou estudando pra certificação me deparei com a seguinte questão no testkiller:
Given:
static classA {
void process() throws Exception { throw new Exception(); }
}
static class B extends A {
void process() { System.out.println(?B ?); }
}
public static void main(String[] args) {
A a=new B();
a.process();
}
What is the result?
acredito que a mesma esteja errada pois em java não é possivel criar classes estaticas a não ser que a mesma seja interna.
bom caso eu esteja errado gostaria que alguem com conhecimento no assunto podesse me orientar
Você está certo.
Agora, supondo que essas classes estejam dentro de uma outra, a resposta seria a impressão de B, pois o polimorfismo atua independente do tipo de classe (pode ser interna, estática, não estática, etc).
kra obrigado pela ajuda, agora tenho apenas mais uma pergunta, digamos que o classe estatica esteja dentro de uma outra classe normal como vc falou. então pra que eu usasse o metodo process eu teria que implementar um try/cath visto que naa classe A o mesmo lança um Exception? outro ponto como a classe B herda a classe A o metodo process da classe A tem throws Exception então quando eu implementasse o metodo process da classe B este tambem não deveria vim com throws Exception visto que não houve alteração na assinatura do método.
Nesse caso, teria que colocar um try catch sim, pois você está usando a partir da classe A.
Ou uma clausula throws no main.
Agora, quanto a sua segunda dúvida. Não é necessário que B lance também a exception.
Um método filho pode declarar menos exceções que o pai, mas não mais.
Isso permitiria que alguém fizesse:
B b = new B();
b.process();
Sem ter que fazer um try…catch.
Kra muito obrigado pela ajuda mesmo. vlw