I am beginning my journey of learning about dependency injection, and one of the reasons that I saw why it is a good idea to use DI was that it explicitly specifies your dependencies, which also makes your code more clear.
I have also noticed that interfaces are used abundantly, but I want to know why would we not use abstract classes for the sole purpose of specifying a default constructor?
Of course no implementation could be included in the abstract class.
Wouldn't this:
abstract class FooBase
{
    protected IBar _bar;
    FooBase(IBar bar)
    {
        _bar = bar;
    }
    abstract void DoSomething();
    abstract void DoSomethingElse();
}
Demonstrate more clearly what the dependency of a FooBase object is more than:
interface IFoo
{
    IBar Bar { get; }
    void DoSomething();
    void DoSomethingElse();
}
?
Please keep in mind I am new to this whole concept so be nice :)
 
     
     
     
    