In C#, function declarations within an interface are implicitly pure virtual. An abstract class is a partially defined class that cannot be instantiated. It (usually) includes some implementation, but leaves some functions as pure virtual- declared only by their signature.