Abstraktit luokat ovat sellaisia, ettei niistä voi tehdä instanssia suoraan, vaan jonkun luokan tulee periytyä siitä. Vertauksena tosielämään voisi sanoa, että auto ja moottoripyörä ovat ajoneuvoja, mutta ajoneuvo itsessään ei ole mikään esine. Abstrakteilla luokilla voi olla jäseniä, jotka ovat yleensä yhteisiä kaikille periville luokille
public abstract class Ajoneuvo
{
}
public class Auto : Ajoneuvo
{
}
Ajoneuvo an1 = new Ajoneuvo(); // virhe
Ajoneuvo an2 = new Auto(); // ok
Abstracktiin luokkaan voi tehdä

Abstraktit jäsenet

Luokan abstraktit jäsenet ovat sellaisia, että niillä ei ole toteutusta, vaan se jää perivän luokan tehtäväksi.
public abstract class Ajoneuvo
{
	// abstrakti ominaisuus
	public abstract int Huippunopeus { get; }
	// abstrakti metodi
	public abstract void Kiihdyta();
}
public class Auto : Ajoneuvo
{
	// abstraktin ominaisuuden toteutus
	public override int Huippunopeus
	{
		get
		{
			return 200;
		}
	}
	// abstraktin metodin toteutus
	public override void Kiihdyta()
	{
		Console.WriteLine("Auto kiihdyttää");
	}
}