Note: I have moved to wordpress. New URL is "Technology Made Easy"

Wednesday, July 30, 2008

C# : Reference of Abstract class containing derived class instance

You could have seen a object initialization like this


A a = new B();


where B is a derived class of A. But we cannot do the other way around.


B b = new A(); // because A is an abstract class


Take a look into the below example and its output.You can understand how it
works.






using System;
using System.Text;

namespace aruns_code
{
class testAbstract
{
[STAThread]
static void Main(string[] args)
{
der derObj = new der();
derObj.nonAbs();

Console.WriteLine("\n\n");

abs absObj = new der();
absObj.nonAbs();
absObj.absMethod();
}
}

class der : abs
{
public der()
{
Console.Write("initialized der\n");
}

public override void absMethod()
{
Console.Write("inside der\n");
}

public new void nonAbs()
{
Console.Write("inside nonAbs of der\n");
}
}


abstract class abs
{
public abs()
{
Console.Write("initialized abs\n");
}

public abstract void absMethod();

public void nonAbs()
{
Console.Write("inside nonAbs of abs\n");
}
}

}




The following is the output




initialized abs
initialized der
inside nonAbs of der

initialized abs
initialized der
inside nonAbs of abs
inside der

No comments:

Ratings by outbrain