title: combination of extend abstract class and implement interface
body: <blockquote>
    <p><strong>Possible Duplicate:</strong><br>
    <a href="https://stackoverflow.com/questions/4387419/why-does-arraylist-have-implements-list">Why does ArrayList have “implements List”?</a>  </p>
  </blockquote>
  
  
  
  <p>I have gone through several articles <a href="https://stackoverflow.com/questions/761194/interface-vs-abstract-class-general-oo">Diff b/w I vs AC</a> and questions on SO about when to use an interface vs Abstract Class.</p>
  
  <p>When I stumbled upon ArrayList Class, ArrayList class extends AbstractList Class implements List interface. AbstractList and List has common methods like add(), remove() etc.</p>
  
  <p><strong>Edit:</strong> In other words, if AbstractList implements List why have Arraylist class implement List</p>
  
  <p>When is this kind of combination inheritance behavior design preferred when both have common methods? </p>
  
  <pre><code>public class ArrayList&lt;E&gt; extends AbstractList&lt;E&gt;
          implements List&lt;E&gt;
  </code></pre>