ola pessoal...
no livro da kathy em portugues, pag 61, tem a seguinte observação...
Se um método for subscrito mas você usar uma referência polimorfica (do supertipo) para apontar para o objeto do subtipo com o método subscritor, o compilador assumirá que você esta chamando a versão do método do supertipo. Se a versão do supertipo declarar uma exceção verificada, mas o método não o fizer, o compilador ainda assim pensara que você esta chamando um método que declara uma exceção.
e segue o seguinte exemplo:
public class Animal {
public void eat() throws Exception
{
//lança uma exceção (no livro nao lança nenhuma exceção... entao lancei a seguinte...)
try
{
System.out.println("eat animal");
int b = 1;
b = b/0;
}catch(Exception exception)
{
System.out.println("Este erro eu que lancei! "+ exception);
}
}
}
public class Dog2 extends Animal{
public void eat()
{
System.out.println("Sem exceções!");
}
public static void main(String[] args)
{
Animal a = new Dog2();
Dog2 b = new Dog2();
b.eat(); // ok
a.eat(); // erro de compilação (segundo o livro)
}
}
se eu adicionar a clausula throws Exception no metodo main da classe Dog2, não ocorrera o erro de compilação nem mesmo de execução citado no livro...
a saida sera...
Sem exceções!
Sem exceções!
pelo que entendi na explicação do livro...
se eu NAO declarar uma exceção no metodo eat da classe Dog2 ocorrera um erro caso eu tente instanciar um objeto do tipo Animal usando uma referencia ao objeto Dog2...
e isso nao ocorre se eu adicionar a clausula throws Exception no metodo main...
alias... outra teste que fiz...
mesmo eu declarando um objeto do tipo Animal referenciando ao objeto da super classe Animal... se eu nao declarar a clausula throws Exception no metodo main... ocorrera erro de compilação...
nao entendi nada da explicação do livro... achei q faltou coisa ai.... se alguem puder me ajudar...
[]s a todos...
