Console.WriteLine("Willkommen zu Aufgabe4");

Fahrzeug[] fahrzeuge = new Fahrzeug[3];
fahrzeuge[0] = new Fahrzeug("KA TE 4711");
fahrzeuge[1] = new PKW("KA SC 1894");
fahrzeuge[2] = new LKW("S OS 2342");

foreach (Fahrzeug fahrzeug in fahrzeuge)
{
    Console.WriteLine(fahrzeug.Drive());
    // Mir ist bewusst, dass hier nicht die Drive Methode von LKW aufgerufen wird. 
}

public class Fahrzeug
{
    public string kennzeichen { set; protected get; }

    public Fahrzeug() { }

    public Fahrzeug(string kennzeichen)
    {
        this.kennzeichen = kennzeichen;
    }

    ~Fahrzeug()
    {
    }

    public virtual string Drive()
    {
        return this.kennzeichen;
    }
}

public class PKW : Fahrzeug
{
    public PKW() { }
    public PKW(string kennzeichen) : base(kennzeichen)
    {
    }

    public override string Drive()
    {
        return $"PKW: {base.Drive()}";
    }
}

public class LKW : Fahrzeug
{
    public LKW() { }
    public LKW(string kennzeichen) : base(kennzeichen)
    {
    }

    public new string Drive()
    {
        return $"LKW: {this.kennzeichen}";
    }
}