"Abstract" is the antonym of "concrete". With abstractions, you represent concepts and ideas, not a concrete way to implement these ideas. This fits into your understanding of abstraction - you hide the details and you only show the interface.
But this also corresponds to abstract classes - they are not concrete (they cannot be created for one), and they do not indicate implementations. They define abstract ideas that subclasses should take care of.
So this is basically a different point of view - one from the point of view of API clients, and the other also about subclasses. (Note that you can use abstract classes instead of interfaces in some cases to achieve the same effect, although this is not considered good practice)
Bozho
source share