Many occasion students are wondering which one should they choose in coding and why .In most cases, we want to avoid inheritance. We should use abstract classes only when we want to include functionality, but parts of the class's purpose need to be implemented by the child class.With abstract classes, you are forcing other developers to implement child classes using inheritance. Interfaces are much easier to add to existing classes, and with defender methods there is little reason to not consider interfaces first.