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.
I read in K&B6 that instance members are accessible only after the super constructor runs.
I stumbled upon the following code:
and it prints:
My question would be:
If instance members are accessible only after the super constructor runs, then why is it that upon execution of the printIt( ) method of class Parent, (which in fact is Child's printIt( ) due to polymorphism), it was able to access the uninitialized instance variable i of Child even though the constructor of Parent has not yet finished executing?
I believe object creation is a two step process. Firstly, the declared variables are processed by the compiler, then the second step involving calling of super constructors up in the hierarchy. after the initialization from all the super classes, the current instance value should be assigned.