I am starting out in Java API design and in reading existing code bases, I have found that most APIs consist of interfaces only with their implementations bundled in a different package.Having read that interfaces are generally more  problematic to use/maintain than abstract classes, why aren't abstract classes used instead of interfaces?
Why do APIs generally consist of interfaces?
java;api;interfaces;api design;java ee
What's an API ? It is an interface by definition.Consider the software you're using as a blackbox. You're not supposed to know how things are done internally, nor are you supposed to want that, or you would just build things yourself.Besides, trying to extend an APIclass yourself may break the tool's behaviour (which, once again, you don't really know).The software you are using and your own softwares are two different softwares, so the only thing you should need is the link between them, namely the interface. See what an interface means in computer science and you should understand why it applies to the OOP meaning of the word.Now as for your abstract class argument, it seems completely subjective. As far as I'm concerned, a class in Java can implement several interfaces but extend only one base class.