Pessoal estou estudando para o SCJP pelo livro da Kath, só q pintou uma dúvida em relação aos lançamentos de exceção em métodos subscritos q diz q um método não pode lançar exceções verificadas novas ou menos abrangentes, bom pelo oq eu entendi um metódo não pode declarar uma ArrayIndexofBound exceptions se ele estiver subescrevendo um métódo que lança uma Exception (por favor me corrijam se eu estiver enganado), só q aí eu peguei este exemplo :
class Animal {
public void eat() throws Exception {
}
}
class Dog extends Animal {
public void eat(){// sem exceção}
public static void main(String[]a){
Animal a = new Dog();
Dog d = new Dog();
d.eat(); / / ok
[color=red]a.eat() // erro exceção não declarada[/color]
// resto do código aqui
Esta parte em vermelho que eu não consigo entender, minha dúvida é como o método chamado será escolhido no momento da execução, baseado no obj (neste caso dog), e esse método não declara nenhuma exceção, pq q o código não compila ?
Abraços._