Tengo dos preguntas sobre el códigoConfundir "reemplazar un método privado"
public class Override {
private void f() {
System.out.println("private f()");
}
public static void main(String[] args) {
Override po = new Derived();
po.f();
}
}
class Derived extends Override {
public void f() {
System.out.println("public f()");
}
}
/*
* Output: private f()
*/// :~
1) ¿Cómo es la función f es visible en la referencia de po de anulación;
2) ¿Por qué es la salida "f privada()"
¿Pero cómo una referencia con un objeto de subclase puede llamar a un método privado de una súper clase? ¿Es esto un error? –
No, esto no es un error, esto es exactamente como debería funcionar. – Jesper
pero no está violando las reglas de herencia y vinculación tardía –