Charu,
Yes, I can explain the results.
This question from my mock exam is an example of the differences between overriding inherited instance methods and hiding static methods of the super class. The explanation appears below the code.
Class Q inherits method printS1S2 from class P. The method printS1S2 invokes methods printS1 and printS2. Since printS1 is static the reference to it is assigned at compile time and therefore P.printS1 is invoked. However, printS2 is an instance method so the reference to it is not computed until run time when printS1S2 is invoked as an inherited member of class Q. As a result, Q.printS2 is invoked.
Method Q.printS1 hides P.printS1. However, Q.printS2 overrides P.printS2.
If you would like to work with more questions ralated to inheritance, then you might want to try my mock exam at the URL contained in my signature. On the home page, you will see two versions of the exam, July 4 and July 8.
You should always use the latest version. After you click on July 8, then go to the topic exams and select inheritance. There are 10 questions in the inheritance topic and all of them have explanations.