Confuso "substituir um método privado"
Eu tenho duas perguntas sobre este código
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) Como a função f é visível na referência de Override po;
2) Por que a saída é "f particular ()"