Interfaces and abstract classes serve different goals. Interfaces are used to declare contracts for classes while abstract classes are used to share a common implementation.
If you only use abstract classes, your classes cannot inherit from other classes because C# does not support multiple inheritance. If you only use interfaces, your classes cannot share common code.
public interface IFoo
{
    void Bar();
}
public abstract class FooBase : IFoo
{
    public abstract void Bar()
    {
        // Do some stuff usually required for IFoo.
    }
}
Now we can use the interface and base implementation in various situations.
public class FooOne : FooBase
{
    public override void Bar()
    {
        base.Bar(); // Use base implementation.
        // Do specialized stuff.
    }
}
public class FooTwo : FooBase
{
    public override void Bar()
    {
        // Do other specialized stuff.
        base.Bar(); // Use base implementation.
        // Do more specialized stuff.
    }
}
// This class cannot use the base implementation from FooBase because
// of inheriting from OtherClass but it can still implement IFoo.
public class FooThree : OtherClass, IFoo
{
    public virtual void Bar()
    {
        // Do stuff.
    }
}