Prateek Singla wrote:So.. Is it like.. first statics, gets initialized irrespective of the fact from where they come from in inheritance tree and then, main method code starts and then before any object is instationized the no argument constructor runs...
If you don't call another constructor yourself; and that's the important part. If you explicitly call a superclass contructor yourself then that will be run
instead - and
before the constructor for the subclass (which is why it MUST be the first statement in your constructor).
As to instantiation, it gets a bit tricky (at least it used to be; it's possible that the various changes to the memory model have simplified things), but in general you can take it as read that if you write
new Whatever(), the object is not fully instantiated until the constructor for
Whatever has completed (and don't forget that it may have to call superclass constructors first).
To be honest, the nuts and bolts are probably best left to memory architects, who are a rare breed of geek. If you concentrate on writing clear, uncomplicated,
dumb code, the chances are you will never need to worry about it.
Winston