This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
when you instatiate cert you pass 10 and it calls a super constructor but super constructor does not save the increased value anywhere, and when x++ is executed in cert it has value 10 so after the statement it becomes 11.
and if you call super.x it will print 10 original value of x in super class.
When you are calling Grade(int x) constructor and incrementing x value i.e x++, means you are increasing local variables value, not the class's static variable's value(remember that concept of shadowing is applied here).