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 ()"

questionAnswers(3)

yourAnswerToTheQuestion