Simple invoking order of Constructors

In this article I am trying to show the order in which constructor and destructors are called for a class and its base class.

Importance

It is of great importance that we should know constructors work in an inherited manner – especially in interviews.

This will give us more clarity in creating or destroying objects in constructors/destructors.

Example

We have a class named ChildClass having a constructor and destructor

Also, a class named ParentClass having a constructor and destructor

image

Whenever the constructor or destructor is called it logs a message to the main form.

Implementation

We create an instance of ChildClass and make Garbage Collector to destroy the instance.

Thus we are able to invoke the entire constructors/destructors involved.

new ChildClass();

Result

We are able to see the result like: Even though we are creating the instance of ChildClass the ParentClass constructor is invoked first.

But while on destruction the ChildClass destructor is invoked first.

image

Class: ParentClass

public class ParentClass

{

    public ParentClass()

    {

        MainForm.AddMessage("ParentClass constructor invoked");

    }

 

    ~ParentClass()

    {

        MainForm.AddMessage("ParentClass destructor invoked");

    }

}

Class: ChildClass

 

public class ChildClass : ParentClass

{

    public ChildClass()

    {

        MainForm.AddMessage("ChildClass constructor invoked");

    }

 

    ~ChildClass()

    {

        MainForm.AddMessage("ChildClass destructor invoked");

    }

}

 

Leave a Reply

Your email address will not be published. Required fields are marked *