This week's book giveaways are in the Refactoring and Agile forums. We're giving away four copies each of Re-engineering Legacy Software and Docker in Action and have the authors on-line! See this thread and this one for details.
I removed the following from InterfaceVsAbstractClass, because I didn't understand it and suspected that it might be more confusing than of help. I would appreciate some clarification on what was meant by the statement - hopefully we can find a more clear wording.
If you think that there is some generalized concept to be followed by the other classes go for abstract classes. But if you think that there is nothing general (i.e. may be a business requirement) then go for interfaces only.
Abstract Classes can have method implementations in addition to method signatures. Interfaces have only method signatures - they do not allow method implementations.
Abstract Class have Concrete Method .But In Interface Only abstact method and Public Method.