Qual o erro presente nesta classe?

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() {}

}
Essa é uma questao da prova de SCJA

Gostaria de explicações… por favor :smiley:

Obrigado!

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.

flw!

[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