title: Java: Iterator, Iterable - Interface or Abstract Class?
body: <p>My question is quite simple, and it all started after I accidently saw the source code of the Iterable interface. I thought I will find this interface has a member of an abstract-class called "AbstractIterator" or something like that, but it turns out it's an interface.</p>
  
  <p>Why? Why isn't Iterator an Abstract class? 
  Interfaces are used to define a certain trait - that's why the 'able' ending pops out on so many of them. But it turns out that java holds a different view, as it seems. Explanation, please...:)</p>
  
  <p>P.s: List, Set etc are also, in my view, supposed to be abstract classes - so my question is about 'em as well...</p>