1) Class B's printit() method is NOT overriding Class A's printit() method because of the fact that Class A's method is Private.
2)
Polymorphism applies only to overriden methods and not overloaded or redefined methods.
3) Had it been the case that Class A defines printit() method to be public , then the output at second line would definitely be B, because at that time Class B overrides prinit() method and polymorphism applies to it.
Thanks !!!