Gostaria de saber o porque do erro na linha 6
Interface A{}
Interface B{void b();}
Interface C {public void c();}
abstract class D implements A, B, C {}
class E extends D {
void b (){} // POR QUE DA ERRO AQUI… ?
public void c() {}
Cara, por padrao os metodo de uma interface sao definidos com public abstarct e veja que quando voce implementa uma interface voce deve explicitamente definir a visibilidade do metodo, assim:
class E extends D {
public void b (){}
public void c() {}
}
Todas as vezes q voce sobreescreve um metodo public voce nao pode reduzi a visivilidade dele para protected ou mesmo default.
T+
so para completar o que o vini falou, da forma que deixou na linha 6 (que nao vi o nro da linha) o modificador padrao é default e nao public, alguns acham que sim, mas so é public como padrao em interfaces, mas em classes nao.
[quote=Vini Fernandes]Cara, por padrao os metodo de uma interface sao definidos com public abstarct e veja que quando voce implementa uma interface voce deve explicitamente definir a visibilidade do metodo, assim:
class E extends D {
public void b (){}
public void c() {}
}
Todas as vezes q voce sobreescreve um metodo public voce nao pode reduzi a visivilidade dele para protected ou mesmo default.
T+[/quote]
Mas default nao e a msm coisa que public nao ?
Eu tambem estou herdando do jeito que foi declarado em Interface B … sem o"public"
[quote=diegofss11][quote=Vini Fernandes]Cara, por padrao os metodo de uma interface sao definidos com public abstarct e veja que quando voce implementa uma interface voce deve explicitamente definir a visibilidade do metodo, assim:
class E extends D {
public void b (){}
public void c() {}
}
Todas as vezes q voce sobreescreve um metodo public voce nao pode reduzi a visivilidade dele para protected ou mesmo default.
T+[/quote]
Mas default nao e a msm coisa que public nao ?[/quote]
nao. default está restrito a um package, ou seja, somente as classes daquele package e o public como o proprio nome ja diz, todo mundo tem acesso. Pense nisso como as leis. uma lei municipal é default para uma especifica cidade, mas as leis federais são public. :D.
flw!
[quote=LPJava][quote=diegofss11][quote=Vini Fernandes]Cara, por padrao os metodo de uma interface sao definidos com public abstarct e veja que quando voce implementa uma interface voce deve explicitamente definir a visibilidade do metodo, assim:
class E extends D {
public void b (){}
public void c() {}
}
Todas as vezes q voce sobreescreve um metodo public voce nao pode reduzi a visivilidade dele para protected ou mesmo default.
T+[/quote]
Mas default nao e a msm coisa que public nao ?[/quote]
nao. default está restrito a um package, ou seja, somente as classes daquele package e o public como o proprio nome ja diz, todo mundo tem acesso. Pense nisso como as leis. uma lei municipal é default para uma especifica cidade, mas as leis federais são public. :D.
flw! [/quote]
entao o default e protected ? mas eu estou herdando igual como foi declarada… somente com o void