@Richard.Hein: *sigh* No, no methods on an interface are virtual. The terms "virtual" and "abstract" apply only to classes. For that matter, @magicalclick is just as wrong when he says "if you want multiple inheritance, interface only", because you don't inherit interfaces. You implement them. Right now I may sound like a grammar *, but most of the confusion surrounding these topics comes from incorrect usage of terms such as these.

The fact that methods/properties on an interface aren't virtual/abstract is important to note because if they were you'd be able to override them when you inherit from a class that implements the interface. You can't, unless the implementation declares the method/property to be virtual/abstract.