Por favor … alguém saberia me explicar por qual motivo esse código não compila ?
// primeira classe está no diretório "um"
package um;
public abstract class Pai {
abstract void fazAlgo();
}
// classe Filha no diretorio "dois"
package dois;
public class Filha extends Pai {
public static void main(String[] args) {
Filha f = new Filha();
f.fazAlgo();
}
public void fazAlgo() {
System.out.println("Feito");
}
}
Penssei que fosse devido ao método na classe filho ser public, mas fiz o teste e não é …
Também não é devido à aquela instrução que o NetBeans coloca : @Override
Então o que é ? :roll:
Obrigado …
Altere a linha
abstract void fazAlgo();
por
public abstract void fazAlgo();
isso acontece porque a classe Filha não tem acesso ao método fazAlgo() da classe Pai.

Tá dando erro na linha que declara a classe Filha :
public class Filha extends Pai {
O erro é :
Mas pera aí … acho que tá certo mesmo. O método dá classe filho nunca pode ser mais restrito que o da classe pai apenas pode ser mais aberto(menos restrito).
Mas o problema não é esse…
O problema é o Package. Como o método foi declarado na calsse pai como default o acesso para ele é feito apenas na mesma classe e no mesmo pacote, por isso a classe filho não consegue acessa-lo e por isso da pau.
abstract void fazAlgo();
Alguém me responsa é isso mesmo ?
O problema ta neste default ai mesmo, altera ele pra public se nao poder alterar avisa ai pra galera acha outra solução
É isso mesmo, você não pode fazer Overriding de um método que você não pode enxergar. O método abstrato tem de ser public ou protected.

Obrigado a todos pela ajuda ! :thumbup: