Because you defined the main method in PrivateOverride
class. If you put the main method in Derived class, it would not compile, because .f()
would not be visible there.
po.f() call in PrivateOverride
class is not a polymorphism, because the f()
in PrivateOverride
class is private
, so f()
in Derived
class is not overriden.