Override po = new Derived();
po.f();
Вы получаете доступ к собственному методу Override, даже если объект является производным, потому что согласно правилам области видимости сначала рассматриваются закрытые члены класса, и, как написано в области действия Override, он ссылается на закрытый f, а так как его закрытый вообще не переопределяются в классе Derived, они будут переопределены, только если сигнатура метода одинакова.
Derived po = new Derived();
po.f();
Это правильный код, который назовет Derived's f