let’s say I have the following code:
class A { Greating g = new Greating(); public A(){system.out.print("Creating class A");} } class B extends A{ public B(){system.out.print("Creating class B");} } class Greating{ public Greating(){system.out.print("Hi");} }
What are the outputs when I try to execute
public static void main(String[] args) { new B(); }
I thought it would first call the constructor of B and the constructor of B will call the constructor of A but the I don’t know which between “creating A” or “Hi” message will be shown first. The first thing invoked on a class should be its constructor but when I executed the program I noticed “Hi” was shown after “Creating A”. Why?
Advertisement
Answer
Output will be something like bellow:
Hi Creating class A Creating class B
Because at first constructor Greating() will be called to initialize property g of A then executed constructor A() and then executed constructor B()