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…
[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
Sobre interfaces
-
Compilação sem erro ou warining
-
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.
-
Toda a interface é abstract por natureza ao colocar abstract
como é o caso da interface acima, não gera erro ou warining
e executa normalmente.
-
interfaces geram arquivos .class
-
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