Substituicao de metodos - overridden

Opa, olha eu de novo pra mais uma pergunta . . .

Bom galera, o código é o seguinte:

  import java.io.*;
  
  abstract interface Test1 {
    public void test() throws IOException;
  }

  public class Test implements Test1 {
    public void test() {}
  }

as respostas corretas sao:
Compila sem erro

mas pra mim teria que dar erro de compilacao uma vez que em metodos overridden esses métodos novos nao poderao lancar excecoes novas ou mais abrangentes…

8O

o que estou pecando?

donatinho

Ae donatinho

Como vc mesmo disse:

"metodos overridden esses métodos novos nao poderao lancar excecoes novas ou mais abrangentes… "

Em :

  public class Test implements Test1 {
    public void test() {}
  }

Você está overridden o metodo test() … e não está lançando novas exceções e também não está lançando exceção mais abrangente… nesse caso seu metodo não lança exceção…

Então está certo o codigo.

Ola

Pode crer que tá certo… se houver erro é no “abstract” da interface, mas não me lembro se altera colocar este modificador, pois uma interface já é abstract…

[quote=“BrunoCarlo”]Ola

Pode crer que tá certo… se houver erro é no “abstract” da interface, mas não me lembro se altera colocar este modificador, pois uma interface já é abstract…[/quote]

Todas da interfaces ja sao abstract, e colocar ou nao o abstract na declaracao dela nao faz nenhuma diferenca.

[quote=“Cassolato”][quote=“BrunoCarlo”]Ola

Pode crer que tá certo… se houver erro é no “abstract” da interface, mas não me lembro se altera colocar este modificador, pois uma interface já é abstract…[/quote]

Todas da interfaces ja sao abstract, e colocar ou nao o abstract na declaracao dela nao faz nenhuma diferenca.[/quote]

Pois é… disto eu sei… não sei se isto pode gerar algum erro de compilação… sei lá, o compilador implicar com isto…

Valeu pela resposta!!!

[quote=“BrunoCarlo”][quote=“Cassolato”][quote=“BrunoCarlo”]Ola

Pode crer que tá certo… se houver erro é no “abstract” da interface, mas não me lembro se altera colocar este modificador, pois uma interface já é abstract…[/quote]

Todas da interfaces ja sao abstract, e colocar ou nao o abstract na declaracao dela nao faz nenhuma diferenca.[/quote]

Pois é… disto eu sei… não sei se isto pode gerar algum erro de compilação… sei lá, o compilador implicar com isto…[/quote]

Ele não gera não.

[quote=“Cassolato”][quote=“BrunoCarlo”][quote=“Cassolato”][quote=“BrunoCarlo”]Ola

Pode crer que tá certo… se houver erro é no “abstract” da interface, mas não me lembro se altera colocar este modificador, pois uma interface já é abstract…[/quote]

Todas da interfaces ja sao abstract, e colocar ou nao o abstract na declaracao dela nao faz nenhuma diferenca.[/quote]

Pois é… disto eu sei… não sei se isto pode gerar algum erro de compilação… sei lá, o compilador implicar com isto…[/quote]

Ele não gera não.[/quote]

Interessante… tae uma coisa que nunca tentei fazer… mas bom saber.

Permitam-me apenas organizar as idéias postadas aqui e acrescentar algo :grin:

Sobre interfaces

  1. Compilação sem erro ou warining

  2. Métodos sobrescritos não podem lancar exceções novas ou mais
    abrangentes. No caso do código acima, não está sendo lançado
    novas exceções ou exceções mais abrangentes. Apenas não lança
    exceção.

  3. Toda a interface é abstract por natureza ao colocar abstract
    como é o caso da interface acima, não gera erro ou warining
    e executa normalmente.

  4. interfaces geram arquivos .class

  5. Caso a classe não possa definir os métodos da interface, a mesmo deve ser declarada como abstract

[code]
interface TesteInterface {
void teste();
}

abstract class TesteAbstract implements TesteInterface {

public static void main( String[] args ) {

System.out.println( "TesteAbstract" );

} // fim do método main

} // fim da classe TesteAbstract [/code]

Um forte abraço

Deyvid Rannyere Moraes Costa