Galera,
Estou c/ uma dúvida referente o livro da Kathy, segue:
No capítulo 2 está dizendo que para implementação de um método de uma interface qualquer, é necessário que sigamos as regras de sobrecarga, que resumindo, dizem:
-Métodos sobrecarregados devem alterar os parâmetros;
-Métodos sobrecarregados devem alterar o tipo de retorno;
-Métodos sobracarregados podem alterar o modificador de acesso(colocar qualquer um), etc.
Tenho a seguinte Interface e Classe:
interface Boo {
void o();
}
class Foo implements Boo{
[b]protected[/b] void o(){ // ñ compila tem o [i]protected[/i]
System.out.println("o");
}
}
E se ñ coloco nenho modificador de acesso também ñ compila, só compila c/ o public.
E as regras de sobrecarga??
Alguém pode me ajudar??
isso ia funcionar se fosse uma class abstract com um metodo default… porem nao funciona para interface devido os metodos de uma interface ser implicitamente public entao vc nao pode converter de public para protected na subscrição. por isso nao compila… o que vc tem q ter em mente sobre interface:
mesmo que eu nao declare nenhum modificador os metodos sao public
quando declarar uma variavel mesmo que nao coloque final, static e public implicitamente isso ja acontece.
exemplo:
interface Z{
void z();//implicitamente public
public void y();
int k=5;//implicitamente public static final
}
class Compila{
public void z(){}
public void y(){}
}
class NaoCompila{
void z(){} //tentando converter de public para default
public void y(); //invalido nao implementei o metodo
Z.k=4;//tentei alterar uma variavel final
}