@YurySolovyov yes, exactly that. There are very few examples where inheritance makes sense (GUI is probably the one, but I believe that main reason for that is because no one ever truly tried other way). However interfaces can (and in most cases will) have hierarchy, ex. DoubleEndedIterator doesn't make sense on type that do not implement Iterator .