File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Beginning Java and the fly likes Please Explain working of this program. Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Please Explain working of this program." Watch "Please Explain working of this program." New topic
Author

Please Explain working of this program.

Prateek Singla
Greenhorn

Joined: Dec 18, 2012
Posts: 2
Hi, I am new to this form. I came up across this code in Head First Java, if someone could explain my small doubt, I would really appreciate it.
Code goes like this-


I got output as-
super static block
static block 10
in main
super constructor
constructor

What I could not understand is.., why there is "super constructor" in second last line. As the code is neither called explicitly or implicitly...
Phil English
Ranch Hand

Joined: Jun 18, 2012
Posts: 62

The no argument superclass constructor is called implicitly from the subclass constructor where you do not instruct otherwise using this() or super(args)

Take a look at the note towards the bottom of this page
Prateek Singla
Greenhorn

Joined: Dec 18, 2012
Posts: 2
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...
Winston Gutkowski
Bartender

Joined: Mar 17, 2011
Posts: 7484
    
  18

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


Isn't it funny how there's always time and money enough to do it WRONG?
Articles by Winston can be found here
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Please Explain working of this program.
 
Similar Threads
I can't change card in cardLayout using JTree listener
how this program works i didn't understand
Ending a loop
Creating an Array list
Problem with sorting an integer array