Galera estou dando uma estudada no livro SCJP
E estou na parte de polimorfismo gostaria de tirar uma duvida com voces, é o seguinte
O metodo novo nao deae lançar exceções verificadas novas ou mais abrangentes que as declaradas pelo m6todo sobrescrito.
Por exemplo, um m6todo que declare uma exceção FileNotFoundException não poderá ser sobrescrito
Por um m6todo que declare uma exceção SQlException, Except.ion ou qualquer outra excegio que não
seja de tempo de execução, a menos que ela seja uma subclasse de FileNotFoundException.
O metodo novo poderá lançar exeções mais restrivas ou menos abrangentes. Só por que o m6todo sobrescrito "se arriscou’,
não quer dizer que a exceção da nova subclasse deva contemplar os mesmos riscos. Conclusão: O m6todo
novo não precisa declarar nenhuma exceção que nunca lançará, independente do que o m6todo sobrescrito
tenha declarado.
Então o livro da o ex.
class animal {
public void eat() throws Exception{
// lança uma exceção
}
class Dog2 extends Animal {
public void eat() { //sem Exceções }
public static void main(String [] args) {
Animal a=newDog();
Dog2 d = new Dog();
d.eat();// ok
a.eat(); // erro de compilação
// exeção nao relatada
}
}
Como isso pode acontecer?