Ajuda pra entender regra sobre reescrita

2 respostas
faeldix

segue a regra do livro:

li, reli e nao entendi :frowning:
alguem poderia me dar uma luz?

abraço!

2 Respostas

rmendes08

Suponha que você tenha a seguinte interface:

public interface ServiceProvider{
    Service lookupService(String name) throws ServiceException;
}

O método lookupService declara que lança uma ServiceException. Quando uma classe implementar esse método, a implementação não é obrigada a lançar uma ServiceException. Ela pode simplesmente não declarar exceções ou declarar exceções que sejam um sub-tipo de ServiceException, por exemplo:

public interface WebServiceProvider implements ServiceProvider{
   @Override
   Service lookupService(String name) throws WebServiceNotFoundException;
}

class WebServiceNotFoundException extends ServiceException{}

o que não pode acontecer é uma implementação lançar exceções mais abrangentes do que as exceções declaradas na interface ou superclasse.

drsmachado

O que ele quer dizer é que, por exemplo

public class A{
    public void metodo() throws Exception{
      //faz algo
    }
}

E na subclasse

public class B extends A{
   @Override
   public void metodo() throws ParseException{
     //faz outro algo
   }
}

Ou seja, você pode alterar a abrangência para os tipos de Exception lançadas nos métodos sobrescritos das subclasses.

Criado 19 de julho de 2012
Ultima resposta 20 de jul. de 2012
Respostas 2
Participantes 3