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ä
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ää");
}
}