Смущает «переопределить приватный метод»

У меня есть два вопроса по этому коду

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) Как функция f видна на ссылке Override po;

2) Почему вывод "private f () "

Ответы на вопрос(3)

Ваш ответ на вопрос