Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Sobrecarga de método privado

Eu não havia entendido o porquê do resultado ser: Diego Diego.

class a {
    String nome;
    a(String s) {
        imprimeNome(s);
    }

    private void imprimeNome(String s){
        System.out.println(s);
    }

}

class b extends a {
    b(String s){
        super(s);
    }
    void imprimeNome(String s){
        System.out.println(s.length());
    }

}

public class TesteA {
    public static void main(String[] args) {
        a a = new a("Diego");//tipo "a" aponta para um objeto "a"
        a b = new b("Diego"); //tipo "a" aponta para um objeto "b"
        // no tipo "a" só há o método "imprimeNome()", por ele ser "private" quando criamos o objeto do tipo "b" ele não sobrescreve o método do tipo "a", por isso mesmo que em runtime, ele executa o método do tipo "a" e não do tipo "b" pois não houve sobrescrita.
    }
}

Agora acho que entendi como ocorre a sobrescrita (override). Está correto?

1 resposta
solução

Bom dia Diego, exatamente. Métodos private não são herdados e por isso não podem ser sobreescrito.

Abraços.