TopicInterfaceAbstract Class
InstantiableNoNo
May contain constructorNoYes
May provide default implementationYesYes
Implementations override-ableMustMay
Children must implement all membersYesNo
Multiple inheritanceYesNo
May contains fieldsNoYes (but not abstract fields)
May contain static membersNoYes

Interfaces describe what an object can do. Abstract classes describe what an object is.

interface IPet 
{
    void Eat();
    void Play();
    void Sleep();
}

public class Dog : IPet 
{
    public void Eat() {  }
    public virtual void Play() {  }
    public void Sleep() {  }
}

Virtual methods define implementations, but those implementations can be overridden in derived classes.

public class Labrador : Dog 
{
    public override void Play() {  }
}

Abstract classes can contain both implemented and non-implemented members.
Any class that contains an abstract method must also be declared abstract.