Galera, to com uma duvida aqui nesse código, olhem só:
[code]class Ping extends Util {
public static void main (String args[]) {
Util u = new Ping();
System.out.println(u.getInt("1"));
}
int getInt (String arg) { return Integer.parseInt(arg);}
}
public class Util {
int getInt (String x) throws Exception {return 7;}
}
[/code]
O mesmo não compila, porque o método chamado na linha 5 pede ou que eu declare que o método lança uma Exception ou que eu trate com o Try/Catch. Mas, a sobrescrição entra nessa brincadeira, e o meu novo método sobrescrito não declara nenhuma exceção, ou seja: O que tá acontecendo? Se eu sobrescrevi o método que declarava uma exceção com um método que não lança e não declara que lança uma exceção, porque ele pede o tratamento?
Então, não existe essa história de que é possível sobrescrever um método com uma exceção declarada por um método sem nenhuma exceção declarada, já que em tempo de compilação, ele enxerga o método da superclasse?
Po, guiifreitas, valew, esclareceu a dúvida, em tempo de compilação, somente os tipos são avaliados, assim como no casting.
Mas, tambem nos leva a avaliar, que esse negócio de deixar o novo método sem uma declaração de exceção é besteira, porque faz a pessoa cair nessa pegadinha.