public interface Accelerate
void InterfaceAccelerate();
public class Car : Accelerate
public virtual void VirtualAccelerate()
Console.WriteLine("Accelerating an unknown car");
public virtual void InterfaceAccelerate()
Console.WriteLine("Accelerating an unknown car");
public virtual void Accelerate()
Console.WriteLine("Accelerating an unknown car");
public class ElectricCar : Car, Accelerate
public override void VirtualAccelerate()
Console.WriteLine("Accelerating an Electric car");
public override void InterfaceAccelerate()
Console.WriteLine("Accelerating an Electric car");
public override void Accelerate()
Console.WriteLine("Accelerating an Electric car");
public class PetrolCar : Car, Accelerate
public override void VirtualAccelerate()
Console.WriteLine("Accelerating an Petrol car");
public override void InterfaceAccelerate()
Console.WriteLine("Accelerating an Petrol car");
public override void Accelerate()
Console.WriteLine("Accelerating an Petrol car");
public static void Main()
ElectricCar electricCar = new ElectricCar();
Car electricCarAsCar = new ElectricCar();
InterfaceAccelerateCar(electricCar);
Console.WriteLine("-----");
AccelerateCar(electricCar);
Console.WriteLine("------------------");
InterfaceAccelerateCar(electricCarAsCar);
Console.WriteLine("-----");
AccelerateCar(electricCarAsCar);
Console.WriteLine("------------------");
private static void InterfaceAccelerateCar(Accelerate car)
car.InterfaceAccelerate();
private static void AccelerateCar(Car car)
car.InterfaceAccelerate();