Abstract classes cannot be instanciated themselves. They are used to provide a base structure or base implementation (or part implementation) for other classes.
See these examples:
abstract class A
{
}
abstract class B
{
private int id;
public int ID
{
get { return id; }
set { id = value; }
}
public void DoSomething()
{
Console.WriteLine("Doing it!");
}
}
abstract class C
{
public abstract int ID { get; set; }
public abstract void DoSomething();
}
abstract class D
{
public virtual void DoSomething()
{
Console.WriteLine("Doing it!");
}
}
abstract class E
{
protected const int InitialValue = 5;
}
abstract class F
{
private int id;
protected F(int id)
{
this.id = id;
}
public int ID
{
get { return id; }
set { id = value; }
}
}
class FUseage : F
{
public FUseage()
: base(0)
{ }
}