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?