In what cases would you use interfaces as opposed to regular class inheritance? Why would you use class inheritance instead of interfaces?
One of the biggest distinctions that arises is that of inheritance. If you have a group of unrelated classes that need to share a common convention, such as a certain protocol, you should use interfaces. However, in order to maintain an "is-a" relationship among objects as you progress up and down an inheritance hierarchy, you should use classes.
Can you add an implementation for any of the .NET Framework interfaces?
Yes, interfaces always have a public access specifier.
Can an interface contain private or protected methods and/or properties?
No, an interface can only contain public methods and properties.
Can an interface contain data members instead of properties?
No, only properties are allowed.
Can you obtain an interface pointer from one object and then cast it to the same interface type but from a different object?
Yes, as long as the second object implements that interface.