Luokat voivat periä toisen luokan (kantaluokka), jolloin ne voivat laajentaa/muuttaa sen toiminnallisuutta. Alla esimerkki, jossa Lapsiluokka perii Kantaluokan
public class Kantaluokka
{
// muodostin
public Kantaluokka()
{
Console.WriteLine("Kantaluokan muodostin");
}
// toinen muodostin
public Kantaluokka(string viesti)
{
Console.WriteLine("Kantaluokan muodostin: " + viesti);
}
}
public class Lapsiluokka : Kantaluokka
{
// muodostin
public Lapsiluokka()
{
Console.WriteLine("Lapsiluokan muodostin");
}
// toinen muodostin
// kutsuu kantaluokan muodostinta parametrilla
public Lapsiluokka(string viesti) : base(viesti)
{
Console.WriteLine("Lapsiluokan muodostin: "+viesti);
}
}
Lapsiluokka ll = new Lapsiluokka();
Lapsiluokka ll2 = new Lapsiluokka("Viesti muodostimelle");
base-avainsanalla päästään käsiksi kantaluokan jäseniin
public class Kantaluokka
{
public void Metodi()
{
Console.WriteLine("Metodi kantaluokassa");
}
}
public class Lapsiluokka : Kantaluokka
{
public new void Metodi()
{
Console.WriteLine("Metodi lapsiluokassa");
}
}
Lapsiluokka ll = new Lapsiluokka();
ll.Metodi();
public class Kantaluokka
{
public virtual void Metodi()
{
Console.WriteLine("Metodi kantaluokassa");
}
}
public class Lapsiluokka : Kantaluokka
{
public override void Metodi()
{
base.Metodi();
Console.WriteLine("Metodi lapsiluokassa");
}
}
Lapsiluokka ll = new Lapsiluokka();
ll.Metodi();
Lapsiluokka ll = new Lapsiluokka();
ll.NormaaliMetodi(); // kutsuu lapsiluokkaa
ll.VirtuaalinenMetodi(); // kutsuu lapsiluokkaa
Kantaluokka kl = ll;
kl.NormaaliMetodi(); // kutsuu kantaluokkaa!
kl.VirtuaalinenMetodi(); // kutsuu lapsiluokkaa