Inheriting Constructors

Reading source code should be the aim of every serious software developer. I am constantly looking for patterns that are interesting and potentially useful for future projects. Anyway, I was reviewing some code over the weekend and there was a pattern that I have not seen for a while.

So below is a basic abstract Mammal class, you have two constructors differentiated by the method signature (of course).

public abstract class Mammal
{
public Mammal()
{
Console.WriteLine("A");
}
public Mammal(bool asf)
{
Console.WriteLine("B");
}
}
public abstract class Mammal { public Mammal() { Console.WriteLine("A"); } public Mammal(bool asf) { Console.WriteLine("B"); } }
public abstract class Mammal
{
	public Mammal()
	{
		Console.WriteLine("A");
	}
	public Mammal(bool asf)
	{
		Console.WriteLine("B");
	}
}

So the MyDog class inherits from from Mammal and provides an opportunity to access the either of the base class constructors.

public class MyDog : Mammal
{
public MyDog() : base()
{
Console.WriteLine("1");
}
public MyDog(bool asf) : base(asf)
{
Console.WriteLine("2");
}
}
public class MyDog : Mammal { public MyDog() : base() { Console.WriteLine("1"); } public MyDog(bool asf) : base(asf) { Console.WriteLine("2"); } }
public class MyDog : Mammal
{
	public MyDog() : base()
	{
		Console.WriteLine("1");
	}
	public MyDog(bool asf) : base(asf)
	{
		Console.WriteLine("2");
	}
}

You can explicitly select which base class constructor gets called by using ": base()" pattern after the constructor. Simple but nice!

Technorati tags: ,


Comment Section

Comments are closed.