In the book The Philosophy of Java, a phrase like:
Recall the advice given at the end of the previous chapter: give preference to classes over interfaces. If the system architecture requires an interface, you will understand. In other cases, do not use interfaces unless absolutely necessary.
At the same time, almost in all the book on OOP and patterns it is said that preference should always (!) Be given to abstraction, and not to implementation.
I don’t have any real programming experience in Java, so such contradictory statements are confusing. Who to believe?