Default constructor refers to a constructor without parameters, wheter created automatically or created by you.
A defualt constructor is created automatically if you don't declare any other instance constructor, with or without paramters. (declaring a static constructor won't avoid the defautl constructor to be automatically created).
The constructors of a hierarchy of classes are not inherited, but all the constructor on the inheriting chain are invoked when using the constructor of a derived class, starting from the root of the hierarchy. Unless you specify which constructor to invoke, the default constructor of each class is invoked.
public class Base
{
public Base()
{
}
}
public class Derived : Base
{
public Derived()
{
}
}
// invokes, the Base() construtor, and then the Derived() constructor
var d = new Derived();
You can also explicitly invoke a base class constructor, with or without parameters like so:
// Derived class explicitly invoking base class constructor.
public Derived() :base()
{
}
If you want, you can invoke a base class constructor with parameters like so:
public Derived(int j) :base(j)
or so
public Derived() :base(23)
In this last code sample, if you create a Derived object with the default constructor, the constructor invoked in the base class isn't the default one, but a constructor with an integer parameter, invoked with the parameter 23.
(of course, this constructor with parameter must exist in the Base class).
You can only invoke explicitly the constructor of the inmediate base class.