title: why Interface Default methods?
body: <p>Learning java 8 default methods . 
  This <a href="https://blog.idrsolutions.com/2015/01/java-8-default-methods-explained-5-minutes/" rel="noreferrer">link</a>  like any other resource on internet says</p>
  
  <blockquote>
    <p>In ‘the strictest sense’, Default methods are a step backwards because
    they allow you to ‘pollute’ your interfaces with code. But they
    provide the most elegant and practical way to allow backwards
    compatibility. It made it much easier for Oracle to update all the
    Collections classes and for you to retrofit your existing code for
    Lambda.</p>
  </blockquote>
  
  <p>My understanding is that java 8 dev/designers provided the default method in interfaces so that all implementing class does not have to unnecessarily
  override same behavior, hence provide backward compatibility. For example :- if ForEach method would not have been default method, every collection implementing class had to implement it. Agreed .</p>
  
  <p>To overcome that we could have had one class providing implementation of these default methods and then implementing class like arraylist etc could
  have extended that. This way we could have statisfy both java fundamentals i.e reusability and abstraction i.e keeping the interface pollution less </p>
  
  <p>I am sure java 8 dev/designer have already thought about this as they are much more learned and i am missing something here. Can someone help here so that we developers can also be on top of it as this major change?</p>