public static void Main()
var harambe = WhatDoWeDo();
((BaseHarambe)harambe).SayHello();
public static IHarambe WhatDoWeDo()
return new RealHarambe();
public interface IHarambe
public abstract class BaseHarambe : IHarambe
public virtual void SayHello()
Console.WriteLine("AAAEEEEEEEE");
public class RealHarambe : BaseHarambe
public override void SayHello()
Console.WriteLine("DICKS OUT");